summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.txt18
-rw-r--r--core/java/android/app/ApplicationErrorReport.java4
-rw-r--r--core/java/android/app/ApplicationPackageManager.java50
-rw-r--r--core/java/android/app/BackStackRecord.java158
-rw-r--r--core/java/android/app/ContextImpl.java27
-rw-r--r--core/java/android/app/FragmentManager.java40
-rw-r--r--core/java/android/app/StatusBarManager.java33
-rw-r--r--core/java/android/app/backup/FullBackup.java13
-rw-r--r--core/java/android/appwidget/AppWidgetHost.java11
-rw-r--r--core/java/android/appwidget/AppWidgetProviderInfo.java22
-rw-r--r--core/java/android/content/SyncManager.java4
-rw-r--r--core/java/android/hardware/display/DisplayManager.java11
-rw-r--r--core/java/android/hardware/display/IDisplayManager.aidl9
-rw-r--r--core/java/android/net/CaptivePortalTracker.java8
-rw-r--r--core/java/android/net/ConnectivityManager.java8
-rw-r--r--core/java/android/net/DnsPinger.java4
-rwxr-xr-xcore/java/android/provider/ContactsContract.java3
-rw-r--r--core/java/android/provider/Settings.java1286
-rw-r--r--core/java/android/view/View.java70
-rw-r--r--core/java/android/view/ViewDebug.java12
-rw-r--r--core/java/android/view/ViewRootImpl.java1
-rw-r--r--core/java/android/view/accessibility/IAccessibilityManager.aidl4
-rw-r--r--core/java/android/webkit/BrowserFrame.java2
-rw-r--r--core/java/android/webkit/WebViewClassic.java4
-rw-r--r--core/java/android/webkit/WebViewCore.java14
-rw-r--r--core/java/android/widget/AbsListView.java16
-rw-r--r--core/java/android/widget/AdapterViewAnimator.java16
-rw-r--r--core/java/android/widget/ImageView.java2
-rw-r--r--core/java/android/widget/RemoteViews.java30
-rw-r--r--core/java/android/widget/RemoteViewsAdapter.java28
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl7
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBarService.aidl7
-rw-r--r--core/java/com/android/internal/view/RotationPolicy.java35
-rw-r--r--core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java84
-rw-r--r--core/res/AndroidManifest.xml6
-rw-r--r--core/res/res/drawable-hdpi/ic_coins_s.pngbin0 -> 1100 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_lockscreen_alarm.pngbin0 -> 1398 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_lockscreen_sim.pngbin0 -> 4083 bytes
-rw-r--r--core/res/res/drawable-hdpi/lockscreen_protection_pattern.pngbin0 -> 347 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_delete.pngbin2282 -> 1146 bytes
-rw-r--r--core/res/res/drawable-hdpi/sym_keyboard_enter.pngbin0 -> 2109 bytes
-rw-r--r--core/res/res/drawable-hdpi/sym_keyboard_num0_no_plus.pngbin970 -> 1129 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num1.pngbin809 -> 626 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num2.pngbin3214 -> 2450 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num3.pngbin2805 -> 1959 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num4.pngbin2647 -> 1783 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num5.pngbin2536 -> 2002 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num6.pngbin3573 -> 2550 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num7.pngbin3684 -> 2675 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num8.pngbin2904 -> 2450 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-hdpi/sym_keyboard_num9.pngbin3860 -> 3222 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_coins_s.pngbin0 -> 741 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_lockscreen_alarm.pngbin0 -> 839 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_lockscreen_sim.pngbin0 -> 2602 bytes
-rw-r--r--core/res/res/drawable-mdpi/lockscreen_protection_pattern.pngbin0 -> 351 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_delete.pngbin829 -> 896 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_enter.pngbin0 -> 1447 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num0_no_plus.pngbin683 -> 823 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num1.pngbin506 -> 511 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num2.pngbin1778 -> 1574 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num3.pngbin1676 -> 1465 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num4.pngbin1540 -> 1301 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num5.pngbin1417 -> 1403 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num6.pngbin1952 -> 1708 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num7.pngbin2051 -> 1643 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num8.pngbin1605 -> 1541 bytes
-rw-r--r--core/res/res/drawable-mdpi/sym_keyboard_num9.pngbin2173 -> 1924 bytes
-rw-r--r--core/res/res/drawable-xhdpi/ic_coins_s.pngbin0 -> 1483 bytes
-rw-r--r--core/res/res/drawable-xhdpi/ic_lockscreen_alarm.pngbin0 -> 2130 bytes
-rw-r--r--core/res/res/drawable-xhdpi/ic_lockscreen_sim.pngbin0 -> 5201 bytes
-rw-r--r--core/res/res/drawable-xhdpi/lockscreen_protection_pattern.pngbin0 -> 365 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_delete.pngbin3245 -> 1721 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_enter.pngbin0 -> 2747 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num0_no_plus.pngbin1316 -> 1565 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num1.pngbin1051 -> 686 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num2.pngbin3941 -> 3671 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num3.pngbin3566 -> 2816 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num4.pngbin3341 -> 2319 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num5.pngbin3051 -> 2797 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num6.pngbin4377 -> 3776 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num7.pngbin4429 -> 3722 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num8.pngbin3626 -> 3428 bytes
-rw-r--r--core/res/res/drawable-xhdpi/sym_keyboard_num9.pngbin4729 -> 4752 bytes
-rw-r--r--core/res/res/layout-land/keyguard_host_view.xml10
-rw-r--r--core/res/res/layout/app_permission_item_money.xml7
-rw-r--r--core/res/res/layout/keyguard_emergency_carrier_area.xml52
-rw-r--r--core/res/res/layout/keyguard_navigation.xml44
-rw-r--r--core/res/res/layout/keyguard_password_view.xml27
-rw-r--r--core/res/res/layout/keyguard_pattern_view.xml32
-rw-r--r--core/res/res/layout/keyguard_selector_view.xml29
-rw-r--r--core/res/res/layout/keyguard_sim_pin_view.xml30
-rw-r--r--core/res/res/layout/keyguard_status_view.xml11
-rw-r--r--core/res/res/values-af/strings.xml19
-rw-r--r--core/res/res/values-am/strings.xml13
-rw-r--r--core/res/res/values-ar/strings.xml19
-rw-r--r--core/res/res/values-be/strings.xml13
-rw-r--r--core/res/res/values-bg/strings.xml19
-rw-r--r--core/res/res/values-ca/strings.xml17
-rw-r--r--core/res/res/values-cs/strings.xml27
-rw-r--r--core/res/res/values-da/strings.xml13
-rw-r--r--core/res/res/values-de/strings.xml13
-rw-r--r--core/res/res/values-el/strings.xml13
-rw-r--r--core/res/res/values-en-rGB/strings.xml13
-rw-r--r--core/res/res/values-es-rUS/strings.xml39
-rw-r--r--core/res/res/values-es/strings.xml25
-rw-r--r--core/res/res/values-et/strings.xml13
-rw-r--r--core/res/res/values-fa/strings.xml13
-rw-r--r--core/res/res/values-fi/strings.xml13
-rw-r--r--core/res/res/values-fr/strings.xml17
-rw-r--r--core/res/res/values-hi/strings.xml13
-rw-r--r--core/res/res/values-hr/strings.xml13
-rw-r--r--core/res/res/values-hu/strings.xml13
-rw-r--r--core/res/res/values-in/strings.xml15
-rw-r--r--core/res/res/values-it/strings.xml13
-rw-r--r--core/res/res/values-iw/strings.xml13
-rw-r--r--core/res/res/values-ja/strings.xml23
-rw-r--r--core/res/res/values-ko/strings.xml15
-rw-r--r--core/res/res/values-land/arrays.xml12
-rw-r--r--core/res/res/values-land/dimens.xml7
-rw-r--r--core/res/res/values-land/integers.xml26
-rw-r--r--core/res/res/values-lt/strings.xml13
-rw-r--r--core/res/res/values-lv/strings.xml13
-rw-r--r--core/res/res/values-ms/strings.xml21
-rw-r--r--core/res/res/values-nb/strings.xml13
-rw-r--r--core/res/res/values-nl/strings.xml13
-rw-r--r--core/res/res/values-pl/strings.xml17
-rw-r--r--core/res/res/values-pt-rPT/strings.xml15
-rw-r--r--core/res/res/values-pt/strings.xml19
-rw-r--r--core/res/res/values-rm/strings.xml12
-rw-r--r--core/res/res/values-ro/strings.xml27
-rw-r--r--core/res/res/values-ru/strings.xml17
-rw-r--r--core/res/res/values-sk/strings.xml27
-rw-r--r--core/res/res/values-sl/strings.xml13
-rw-r--r--core/res/res/values-sr/strings.xml13
-rw-r--r--core/res/res/values-sv/strings.xml13
-rw-r--r--core/res/res/values-sw/strings.xml15
-rw-r--r--core/res/res/values-sw600dp/bools.xml1
-rw-r--r--core/res/res/values-th/strings.xml13
-rw-r--r--core/res/res/values-tl/strings.xml13
-rw-r--r--core/res/res/values-tr/strings.xml21
-rw-r--r--core/res/res/values-uk/strings.xml13
-rw-r--r--core/res/res/values-vi/strings.xml17
-rw-r--r--core/res/res/values-w720dp/bools.xml1
-rw-r--r--core/res/res/values-zh-rCN/strings.xml37
-rw-r--r--core/res/res/values-zh-rTW/strings.xml13
-rw-r--r--core/res/res/values-zu/strings.xml19
-rw-r--r--core/res/res/values/colors.xml2
-rw-r--r--core/res/res/values/dimens.xml25
-rw-r--r--core/res/res/values/donottranslate-cldr.xml1
-rw-r--r--core/res/res/values/integers.xml4
-rwxr-xr-xcore/res/res/values/strings.xml17
-rw-r--r--core/res/res/values/symbols.xml8
-rwxr-xr-xcore/res/res/xml/kg_password_kbd_numeric.xml59
-rwxr-xr-xcore/res/res/xml/password_kbd_numeric.xml2
-rwxr-xr-xcore/tests/coretests/src/android/content/pm/PackageManagerTests.java16
-rw-r--r--data/fonts/AndroidClock.ttfbin4824 -> 5116 bytes
-rw-r--r--libs/hwui/Caches.cpp28
-rw-r--r--libs/hwui/Caches.h12
-rw-r--r--libs/hwui/DisplayListRenderer.cpp22
-rw-r--r--libs/hwui/DisplayListRenderer.h7
-rw-r--r--libs/hwui/FontRenderer.cpp5
-rw-r--r--libs/hwui/OpenGLRenderer.cpp115
-rw-r--r--libs/hwui/OpenGLRenderer.h14
-rw-r--r--libs/hwui/PathRenderer.cpp401
-rw-r--r--libs/hwui/PathRenderer.h43
-rw-r--r--libs/hwui/SkiaColorFilter.cpp6
-rw-r--r--packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java4
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java77
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java238
-rw-r--r--packages/SystemUI/AndroidManifest.xml5
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.pngbin1976 -> 1927 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.pngbin1976 -> 1928 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.pngbin716 -> 453 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.pngbin712 -> 466 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.pngbin1333 -> 1261 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.pngbin1334 -> 1262 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.pngbin414 -> 332 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.pngbin532 -> 337 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.pngbin2758 -> 2694 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.pngbin2760 -> 2695 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.pngbin822 -> 514 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.pngbin1001 -> 522 bytes
-rw-r--r--packages/SystemUI/res/layout-land/status_bar_recent_panel.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_settings.xml34
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_airplane.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_brightness.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_settings.xml2
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_user.xml1
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded.xml5
-rw-r--r--packages/SystemUI/res/values-af/strings.xml11
-rw-r--r--packages/SystemUI/res/values-am/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml11
-rw-r--r--packages/SystemUI/res/values-be/strings.xml11
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml11
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml11
-rw-r--r--packages/SystemUI/res/values-da/strings.xml16
-rw-r--r--packages/SystemUI/res/values-de/strings.xml13
-rw-r--r--packages/SystemUI/res/values-el/strings.xml11
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml11
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml11
-rw-r--r--packages/SystemUI/res/values-es/strings.xml11
-rw-r--r--packages/SystemUI/res/values-et/strings.xml11
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml11
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml11
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml11
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml11
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml11
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml11
-rw-r--r--packages/SystemUI/res/values-in/strings.xml11
-rw-r--r--packages/SystemUI/res/values-it/strings.xml11
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml13
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml11
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml15
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml16
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml11
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml11
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml11
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml18
-rw-r--r--packages/SystemUI/res/values-rm/strings.xml12
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml18
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml11
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml11
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml11
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml16
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml11
-rw-r--r--packages/SystemUI/res/values-sw380dp/dimens.xml21
-rw-r--r--packages/SystemUI/res/values-sw600dp/dimens.xml3
-rw-r--r--packages/SystemUI/res/values-th/strings.xml11
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml11
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml11
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml11
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml11
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml17
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml11
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml11
-rw-r--r--packages/SystemUI/res/values/dimens.xml9
-rw-r--r--packages/SystemUI/src/com/android/systemui/SearchPanelView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/Somnambulator.java42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java62
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CloseDragHandle.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java75
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java73
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/AutoRotateController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java10
-rw-r--r--policy/src/com/android/internal/policy/impl/EnableAccessibilityController.java277
-rw-r--r--policy/src/com/android/internal/policy/impl/GlobalActions.java146
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java137
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/ClockView.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java8
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java27
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java10
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java2
-rw-r--r--services/input/InputDispatcher.cpp6
-rw-r--r--services/input/InputDispatcher.h2
-rw-r--r--services/input/InputListener.cpp6
-rw-r--r--services/input/InputListener.h6
-rw-r--r--services/input/InputReader.cpp29
-rw-r--r--services/input/InputReader.h6
-rw-r--r--services/input/tests/InputDispatcher_test.cpp2
-rw-r--r--services/input/tests/InputReader_test.cpp8
-rw-r--r--services/java/com/android/server/AppWidgetServiceImpl.java40
-rw-r--r--services/java/com/android/server/BackupManagerService.java63
-rw-r--r--services/java/com/android/server/BatteryService.java8
-rw-r--r--services/java/com/android/server/ConnectivityService.java44
-rw-r--r--services/java/com/android/server/DevicePolicyManagerService.java6
-rw-r--r--services/java/com/android/server/DeviceStorageMonitorService.java20
-rw-r--r--services/java/com/android/server/DropBoxManagerService.java26
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java31
-rw-r--r--services/java/com/android/server/NsdService.java6
-rw-r--r--services/java/com/android/server/ServiceWatcher.java2
-rw-r--r--services/java/com/android/server/StatusBarManagerService.java26
-rw-r--r--services/java/com/android/server/ThrottleService.java60
-rw-r--r--services/java/com/android/server/UiModeManagerService.java4
-rw-r--r--services/java/com/android/server/Watchdog.java29
-rw-r--r--services/java/com/android/server/accessibility/AccessibilityManagerService.java171
-rw-r--r--services/java/com/android/server/accessibility/TouchExplorer.java5
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java9
-rw-r--r--services/java/com/android/server/display/DisplayManagerService.java43
-rw-r--r--services/java/com/android/server/display/WifiDisplayAdapter.java28
-rw-r--r--services/java/com/android/server/dreams/DreamController.java5
-rw-r--r--services/java/com/android/server/input/InputManagerService.java14
-rw-r--r--services/java/com/android/server/location/LocationBlacklist.java2
-rw-r--r--services/java/com/android/server/net/NetworkStatsService.java6
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java13
-rwxr-xr-xservices/java/com/android/server/wm/WindowManagerService.java21
-rw-r--r--services/java/com/android/server/wm/WindowState.java17
-rw-r--r--services/jni/com_android_server_input_InputManagerService.cpp12
-rw-r--r--services/tests/servicestests/src/com/android/server/DropBoxTest.java20
-rw-r--r--services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java12
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java26
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java20
-rw-r--r--wifi/java/android/net/wifi/WifiWatchdogStateMachine.java40
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pService.java38
315 files changed, 4293 insertions, 2643 deletions
diff --git a/api/current.txt b/api/current.txt
index 177b787..e8f911b 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4476,6 +4476,7 @@ package android.appwidget {
public class AppWidgetProviderInfo implements android.os.Parcelable {
ctor public AppWidgetProviderInfo();
ctor public AppWidgetProviderInfo(android.os.Parcel);
+ method public android.appwidget.AppWidgetProviderInfo clone();
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator CREATOR;
@@ -18815,6 +18816,7 @@ package android.provider {
field public static final java.lang.String DATA_ROAMING = "data_roaming";
field public static final java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
field public static final java.lang.String DEVICE_PROVISIONED = "device_provisioned";
+ field public static final java.lang.String HTTP_PROXY = "http_proxy";
field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
field public static final java.lang.String MODE_RINGER = "mode_ringer";
field public static final java.lang.String NETWORK_PREFERENCE = "network_preference";
@@ -18878,7 +18880,7 @@ package android.provider {
field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods";
- field public static final java.lang.String HTTP_PROXY = "http_proxy";
+ field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy";
field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
field public static final java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
@@ -18917,7 +18919,7 @@ package android.provider {
field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
field public static final deprecated java.lang.String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
field public static final deprecated java.lang.String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
- field public static final java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+ field public static final deprecated java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
@@ -19037,12 +19039,12 @@ package android.provider {
field public static final deprecated int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
field public static final deprecated int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
field public static final deprecated int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
- field public static final java.lang.String WIFI_STATIC_DNS1 = "wifi_static_dns1";
- field public static final java.lang.String WIFI_STATIC_DNS2 = "wifi_static_dns2";
- field public static final java.lang.String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
- field public static final java.lang.String WIFI_STATIC_IP = "wifi_static_ip";
- field public static final java.lang.String WIFI_STATIC_NETMASK = "wifi_static_netmask";
- field public static final java.lang.String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
+ field public static final deprecated java.lang.String WIFI_STATIC_DNS1 = "wifi_static_dns1";
+ field public static final deprecated java.lang.String WIFI_STATIC_DNS2 = "wifi_static_dns2";
+ field public static final deprecated java.lang.String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
+ field public static final deprecated java.lang.String WIFI_STATIC_IP = "wifi_static_ip";
+ field public static final deprecated java.lang.String WIFI_STATIC_NETMASK = "wifi_static_netmask";
+ field public static final deprecated java.lang.String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
field public static final deprecated java.lang.String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
field public static final deprecated java.lang.String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
field public static final deprecated java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java
index ebf4261..954476d 100644
--- a/core/java/android/app/ApplicationErrorReport.java
+++ b/core/java/android/app/ApplicationErrorReport.java
@@ -158,8 +158,8 @@ public class ApplicationErrorReport implements Parcelable {
public static ComponentName getErrorReportReceiver(Context context,
String packageName, int appFlags) {
// check if error reporting is enabled in secure settings
- int enabled = Settings.Secure.getInt(context.getContentResolver(),
- Settings.Secure.SEND_ACTION_APP_ERROR, 0);
+ int enabled = Settings.Global.getInt(context.getContentResolver(),
+ Settings.Global.SEND_ACTION_APP_ERROR, 0);
if (enabled == 0) {
return null;
}
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index e77fe6e..7431765 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -50,7 +50,6 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Process;
import android.os.RemoteException;
-import android.os.UserHandle;
import android.util.Log;
import android.view.Display;
@@ -70,7 +69,7 @@ final class ApplicationPackageManager extends PackageManager {
public PackageInfo getPackageInfo(String packageName, int flags)
throws NameNotFoundException {
try {
- PackageInfo pi = mPM.getPackageInfo(packageName, flags, UserHandle.myUserId());
+ PackageInfo pi = mPM.getPackageInfo(packageName, flags, mContext.getUserId());
if (pi != null) {
return pi;
}
@@ -200,7 +199,7 @@ final class ApplicationPackageManager extends PackageManager {
public ApplicationInfo getApplicationInfo(String packageName, int flags)
throws NameNotFoundException {
try {
- ApplicationInfo ai = mPM.getApplicationInfo(packageName, flags, UserHandle.myUserId());
+ ApplicationInfo ai = mPM.getApplicationInfo(packageName, flags, mContext.getUserId());
if (ai != null) {
return ai;
}
@@ -215,7 +214,7 @@ final class ApplicationPackageManager extends PackageManager {
public ActivityInfo getActivityInfo(ComponentName className, int flags)
throws NameNotFoundException {
try {
- ActivityInfo ai = mPM.getActivityInfo(className, flags, UserHandle.myUserId());
+ ActivityInfo ai = mPM.getActivityInfo(className, flags, mContext.getUserId());
if (ai != null) {
return ai;
}
@@ -230,7 +229,7 @@ final class ApplicationPackageManager extends PackageManager {
public ActivityInfo getReceiverInfo(ComponentName className, int flags)
throws NameNotFoundException {
try {
- ActivityInfo ai = mPM.getReceiverInfo(className, flags, UserHandle.myUserId());
+ ActivityInfo ai = mPM.getReceiverInfo(className, flags, mContext.getUserId());
if (ai != null) {
return ai;
}
@@ -245,7 +244,7 @@ final class ApplicationPackageManager extends PackageManager {
public ServiceInfo getServiceInfo(ComponentName className, int flags)
throws NameNotFoundException {
try {
- ServiceInfo si = mPM.getServiceInfo(className, flags, UserHandle.myUserId());
+ ServiceInfo si = mPM.getServiceInfo(className, flags, mContext.getUserId());
if (si != null) {
return si;
}
@@ -260,7 +259,7 @@ final class ApplicationPackageManager extends PackageManager {
public ProviderInfo getProviderInfo(ComponentName className, int flags)
throws NameNotFoundException {
try {
- ProviderInfo pi = mPM.getProviderInfo(className, flags, UserHandle.myUserId());
+ ProviderInfo pi = mPM.getProviderInfo(className, flags, mContext.getUserId());
if (pi != null) {
return pi;
}
@@ -405,7 +404,7 @@ final class ApplicationPackageManager extends PackageManager {
@SuppressWarnings("unchecked")
@Override
public List<PackageInfo> getInstalledPackages(int flags) {
- return getInstalledPackages(flags, UserHandle.myUserId());
+ return getInstalledPackages(flags, mContext.getUserId());
}
/** @hide */
@@ -431,7 +430,7 @@ final class ApplicationPackageManager extends PackageManager {
@SuppressWarnings("unchecked")
@Override
public List<ApplicationInfo> getInstalledApplications(int flags) {
- int userId = UserHandle.getUserId(Process.myUid());
+ final int userId = mContext.getUserId();
try {
final List<ApplicationInfo> applicationInfos = new ArrayList<ApplicationInfo>();
ApplicationInfo lastItem = null;
@@ -451,7 +450,7 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public ResolveInfo resolveActivity(Intent intent, int flags) {
- return resolveActivityAsUser(intent, flags, UserHandle.myUserId());
+ return resolveActivityAsUser(intent, flags, mContext.getUserId());
}
@Override
@@ -470,7 +469,7 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public List<ResolveInfo> queryIntentActivities(Intent intent,
int flags) {
- return queryIntentActivitiesAsUser(intent, flags, UserHandle.myUserId());
+ return queryIntentActivitiesAsUser(intent, flags, mContext.getUserId());
}
/** @hide Same as above but for a specific user */
@@ -514,7 +513,7 @@ final class ApplicationPackageManager extends PackageManager {
try {
return mPM.queryIntentActivityOptions(caller, specifics,
specificTypes, intent, intent.resolveTypeIfNeeded(resolver),
- flags, UserHandle.myUserId());
+ flags, mContext.getUserId());
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
@@ -538,7 +537,7 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) {
- return queryBroadcastReceivers(intent, flags, UserHandle.myUserId());
+ return queryBroadcastReceivers(intent, flags, mContext.getUserId());
}
@Override
@@ -548,7 +547,7 @@ final class ApplicationPackageManager extends PackageManager {
intent,
intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags,
- UserHandle.myUserId());
+ mContext.getUserId());
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
@@ -569,14 +568,14 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public List<ResolveInfo> queryIntentServices(Intent intent, int flags) {
- return queryIntentServicesAsUser(intent, flags, UserHandle.myUserId());
+ return queryIntentServicesAsUser(intent, flags, mContext.getUserId());
}
@Override
public ProviderInfo resolveContentProvider(String name,
int flags) {
try {
- return mPM.resolveContentProvider(name, flags, UserHandle.myUserId());
+ return mPM.resolveContentProvider(name, flags, mContext.getUserId());
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
@@ -763,6 +762,13 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public Resources getResourcesForApplicationAsUser(String appPackageName, int userId)
throws NameNotFoundException {
+ if (userId < 0) {
+ throw new IllegalArgumentException(
+ "Call does not support special user #" + userId);
+ }
+ if ("system".equals(appPackageName)) {
+ return mContext.mMainThread.getSystemContext().getResources();
+ }
try {
ApplicationInfo ai = mPM.getApplicationInfo(appPackageName, 0, userId);
if (ai != null) {
@@ -1118,7 +1124,7 @@ final class ApplicationPackageManager extends PackageManager {
public void clearApplicationUserData(String packageName,
IPackageDataObserver observer) {
try {
- mPM.clearApplicationUserData(packageName, observer, UserHandle.myUserId());
+ mPM.clearApplicationUserData(packageName, observer, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
@@ -1191,7 +1197,7 @@ final class ApplicationPackageManager extends PackageManager {
public void addPreferredActivity(IntentFilter filter,
int match, ComponentName[] set, ComponentName activity) {
try {
- mPM.addPreferredActivity(filter, match, set, activity, UserHandle.myUserId());
+ mPM.addPreferredActivity(filter, match, set, activity, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
@@ -1241,7 +1247,7 @@ final class ApplicationPackageManager extends PackageManager {
public void setComponentEnabledSetting(ComponentName componentName,
int newState, int flags) {
try {
- mPM.setComponentEnabledSetting(componentName, newState, flags, UserHandle.myUserId());
+ mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
@@ -1250,7 +1256,7 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public int getComponentEnabledSetting(ComponentName componentName) {
try {
- return mPM.getComponentEnabledSetting(componentName, UserHandle.myUserId());
+ return mPM.getComponentEnabledSetting(componentName, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
@@ -1261,7 +1267,7 @@ final class ApplicationPackageManager extends PackageManager {
public void setApplicationEnabledSetting(String packageName,
int newState, int flags) {
try {
- mPM.setApplicationEnabledSetting(packageName, newState, flags, UserHandle.myUserId());
+ mPM.setApplicationEnabledSetting(packageName, newState, flags, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
@@ -1270,7 +1276,7 @@ final class ApplicationPackageManager extends PackageManager {
@Override
public int getApplicationEnabledSetting(String packageName) {
try {
- return mPM.getApplicationEnabledSetting(packageName, UserHandle.myUserId());
+ return mPM.getApplicationEnabledSetting(packageName, mContext.getUserId());
} catch (RemoteException e) {
// Should never happen!
}
diff --git a/core/java/android/app/BackStackRecord.java b/core/java/android/app/BackStackRecord.java
index 96814b7..1b1d341 100644
--- a/core/java/android/app/BackStackRecord.java
+++ b/core/java/android/app/BackStackRecord.java
@@ -20,6 +20,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
+import android.util.LogWriter;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -94,11 +95,12 @@ final class BackStackState implements Parcelable {
public BackStackRecord instantiate(FragmentManagerImpl fm) {
BackStackRecord bse = new BackStackRecord(fm);
int pos = 0;
+ int num = 0;
while (pos < mOps.length) {
BackStackRecord.Op op = new BackStackRecord.Op();
op.cmd = mOps[pos++];
if (FragmentManagerImpl.DEBUG) Log.v(FragmentManagerImpl.TAG,
- "BSE " + bse + " set base fragment #" + mOps[pos]);
+ "Instantiate " + bse + " op #" + num + " base fragment #" + mOps[pos]);
int findex = mOps[pos++];
if (findex >= 0) {
Fragment f = fm.mActive.get(findex);
@@ -115,12 +117,13 @@ final class BackStackState implements Parcelable {
op.removed = new ArrayList<Fragment>(N);
for (int i=0; i<N; i++) {
if (FragmentManagerImpl.DEBUG) Log.v(FragmentManagerImpl.TAG,
- "BSE " + bse + " set remove fragment #" + mOps[pos]);
+ "Instantiate " + bse + " set remove fragment #" + mOps[pos]);
Fragment r = fm.mActive.get(mOps[pos++]);
op.removed.add(r);
}
}
bse.addOp(op);
+ num++;
}
bse.mTransition = mTransition;
bse.mTransitionStyle = mTransitionStyle;
@@ -168,7 +171,7 @@ final class BackStackState implements Parcelable {
*/
final class BackStackRecord extends FragmentTransaction implements
FragmentManager.BackStackEntry, Runnable {
- static final String TAG = "BackStackEntry";
+ static final String TAG = FragmentManagerImpl.TAG;
final FragmentManagerImpl mManager;
@@ -206,46 +209,69 @@ final class BackStackRecord extends FragmentTransaction implements
boolean mAllowAddToBackStack = true;
String mName;
boolean mCommitted;
- int mIndex;
+ int mIndex = -1;
int mBreadCrumbTitleRes;
CharSequence mBreadCrumbTitleText;
int mBreadCrumbShortTitleRes;
CharSequence mBreadCrumbShortTitleText;
- public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
- writer.print(prefix); writer.print("mName="); writer.print(mName);
- writer.print(" mIndex="); writer.print(mIndex);
- writer.print(" mCommitted="); writer.println(mCommitted);
- if (mTransition != FragmentTransaction.TRANSIT_NONE) {
- writer.print(prefix); writer.print("mTransition=#");
- writer.print(Integer.toHexString(mTransition));
- writer.print(" mTransitionStyle=#");
- writer.println(Integer.toHexString(mTransitionStyle));
- }
- if (mEnterAnim != 0 || mExitAnim !=0) {
- writer.print(prefix); writer.print("mEnterAnim=#");
- writer.print(Integer.toHexString(mEnterAnim));
- writer.print(" mExitAnim=#");
- writer.println(Integer.toHexString(mExitAnim));
- }
- if (mPopEnterAnim != 0 || mPopExitAnim !=0) {
- writer.print(prefix); writer.print("mPopEnterAnim=#");
- writer.print(Integer.toHexString(mPopEnterAnim));
- writer.print(" mPopExitAnim=#");
- writer.println(Integer.toHexString(mPopExitAnim));
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("BackStackEntry{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ if (mIndex >= 0) {
+ sb.append(" #");
+ sb.append(mIndex);
}
- if (mBreadCrumbTitleRes != 0 || mBreadCrumbTitleText != null) {
- writer.print(prefix); writer.print("mBreadCrumbTitleRes=#");
- writer.print(Integer.toHexString(mBreadCrumbTitleRes));
- writer.print(" mBreadCrumbTitleText=");
- writer.println(mBreadCrumbTitleText);
+ if (mName != null) {
+ sb.append(" ");
+ sb.append(mName);
}
- if (mBreadCrumbShortTitleRes != 0 || mBreadCrumbShortTitleText != null) {
- writer.print(prefix); writer.print("mBreadCrumbShortTitleRes=#");
- writer.print(Integer.toHexString(mBreadCrumbShortTitleRes));
- writer.print(" mBreadCrumbShortTitleText=");
- writer.println(mBreadCrumbShortTitleText);
+ sb.append("}");
+ return sb.toString();
+ }
+
+ public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
+ dump(prefix, writer, true);
+ }
+
+ void dump(String prefix, PrintWriter writer, boolean full) {
+ if (full) {
+ writer.print(prefix); writer.print("mName="); writer.print(mName);
+ writer.print(" mIndex="); writer.print(mIndex);
+ writer.print(" mCommitted="); writer.println(mCommitted);
+ if (mTransition != FragmentTransaction.TRANSIT_NONE) {
+ writer.print(prefix); writer.print("mTransition=#");
+ writer.print(Integer.toHexString(mTransition));
+ writer.print(" mTransitionStyle=#");
+ writer.println(Integer.toHexString(mTransitionStyle));
+ }
+ if (mEnterAnim != 0 || mExitAnim !=0) {
+ writer.print(prefix); writer.print("mEnterAnim=#");
+ writer.print(Integer.toHexString(mEnterAnim));
+ writer.print(" mExitAnim=#");
+ writer.println(Integer.toHexString(mExitAnim));
+ }
+ if (mPopEnterAnim != 0 || mPopExitAnim !=0) {
+ writer.print(prefix); writer.print("mPopEnterAnim=#");
+ writer.print(Integer.toHexString(mPopEnterAnim));
+ writer.print(" mPopExitAnim=#");
+ writer.println(Integer.toHexString(mPopExitAnim));
+ }
+ if (mBreadCrumbTitleRes != 0 || mBreadCrumbTitleText != null) {
+ writer.print(prefix); writer.print("mBreadCrumbTitleRes=#");
+ writer.print(Integer.toHexString(mBreadCrumbTitleRes));
+ writer.print(" mBreadCrumbTitleText=");
+ writer.println(mBreadCrumbTitleText);
+ }
+ if (mBreadCrumbShortTitleRes != 0 || mBreadCrumbShortTitleText != null) {
+ writer.print(prefix); writer.print("mBreadCrumbShortTitleRes=#");
+ writer.print(Integer.toHexString(mBreadCrumbShortTitleRes));
+ writer.print(" mBreadCrumbShortTitleText=");
+ writer.println(mBreadCrumbShortTitleText);
+ }
}
if (mHead != null) {
@@ -254,21 +280,34 @@ final class BackStackRecord extends FragmentTransaction implements
Op op = mHead;
int num = 0;
while (op != null) {
- writer.print(prefix); writer.print(" Op #"); writer.print(num);
- writer.println(":");
- writer.print(innerPrefix); writer.print("cmd="); writer.print(op.cmd);
- writer.print(" fragment="); writer.println(op.fragment);
- if (op.enterAnim != 0 || op.exitAnim != 0) {
- writer.print(prefix); writer.print("enterAnim=#");
- writer.print(Integer.toHexString(op.enterAnim));
- writer.print(" exitAnim=#");
- writer.println(Integer.toHexString(op.exitAnim));
+ String cmdStr;
+ switch (op.cmd) {
+ case OP_NULL: cmdStr="NULL"; break;
+ case OP_ADD: cmdStr="ADD"; break;
+ case OP_REPLACE: cmdStr="REPLACE"; break;
+ case OP_REMOVE: cmdStr="REMOVE"; break;
+ case OP_HIDE: cmdStr="HIDE"; break;
+ case OP_SHOW: cmdStr="SHOW"; break;
+ case OP_DETACH: cmdStr="DETACH"; break;
+ case OP_ATTACH: cmdStr="ATTACH"; break;
+ default: cmdStr="cmd=" + op.cmd; break;
}
- if (op.popEnterAnim != 0 || op.popExitAnim != 0) {
- writer.print(prefix); writer.print("popEnterAnim=#");
- writer.print(Integer.toHexString(op.popEnterAnim));
- writer.print(" popExitAnim=#");
- writer.println(Integer.toHexString(op.popExitAnim));
+ writer.print(prefix); writer.print(" Op #"); writer.print(num);
+ writer.print(": "); writer.print(cmdStr);
+ writer.print(" "); writer.println(op.fragment);
+ if (full) {
+ if (op.enterAnim != 0 || op.exitAnim != 0) {
+ writer.print(innerPrefix); writer.print("enterAnim=#");
+ writer.print(Integer.toHexString(op.enterAnim));
+ writer.print(" exitAnim=#");
+ writer.println(Integer.toHexString(op.exitAnim));
+ }
+ if (op.popEnterAnim != 0 || op.popExitAnim != 0) {
+ writer.print(innerPrefix); writer.print("popEnterAnim=#");
+ writer.print(Integer.toHexString(op.popEnterAnim));
+ writer.print(" popExitAnim=#");
+ writer.println(Integer.toHexString(op.popExitAnim));
+ }
}
if (op.removed != null && op.removed.size() > 0) {
for (int i=0; i<op.removed.size(); i++) {
@@ -276,14 +315,17 @@ final class BackStackRecord extends FragmentTransaction implements
if (op.removed.size() == 1) {
writer.print("Removed: ");
} else {
- writer.println("Removed:");
- writer.print(innerPrefix); writer.print(" #"); writer.print(num);
+ if (i == 0) {
+ writer.println("Removed:");
+ }
+ writer.print(innerPrefix); writer.print(" #"); writer.print(i);
writer.print(": ");
}
writer.println(op.removed.get(i));
}
}
op = op.next;
+ num++;
}
}
}
@@ -538,7 +580,12 @@ final class BackStackRecord extends FragmentTransaction implements
int commitInternal(boolean allowStateLoss) {
if (mCommitted) throw new IllegalStateException("commit already called");
- if (FragmentManagerImpl.DEBUG) Log.v(TAG, "Commit: " + this);
+ if (FragmentManagerImpl.DEBUG) {
+ Log.v(TAG, "Commit: " + this);
+ LogWriter logw = new LogWriter(Log.VERBOSE, TAG);
+ PrintWriter pw = new PrintWriter(logw);
+ dump(" ", null, pw, null);
+ }
mCommitted = true;
if (mAddToBackStack) {
mIndex = mManager.allocBackStackIndex(this);
@@ -641,7 +688,12 @@ final class BackStackRecord extends FragmentTransaction implements
}
public void popFromBackStack(boolean doStateMove) {
- if (FragmentManagerImpl.DEBUG) Log.v(TAG, "popFromBackStack: " + this);
+ if (FragmentManagerImpl.DEBUG) {
+ Log.v(TAG, "popFromBackStack: " + this);
+ LogWriter logw = new LogWriter(Log.VERBOSE, TAG);
+ PrintWriter pw = new PrintWriter(logw);
+ dump(" ", null, pw, null);
+ }
bumpBackStackNesting(-1);
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 45bb305..c41405b 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1029,7 +1029,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, null,
Activity.RESULT_OK, null, null, null, false, false,
- UserHandle.myUserId());
+ getUserId());
} catch (RemoteException e) {
}
}
@@ -1042,7 +1042,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, null,
Activity.RESULT_OK, null, null, receiverPermission, false, false,
- UserHandle.myUserId());
+ getUserId());
} catch (RemoteException e) {
}
}
@@ -1056,7 +1056,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, null,
Activity.RESULT_OK, null, null, receiverPermission, true, false,
- UserHandle.myUserId());
+ getUserId());
} catch (RemoteException e) {
}
}
@@ -1089,7 +1089,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, rd,
initialCode, initialData, initialExtras, receiverPermission,
- true, false, UserHandle.myUserId());
+ true, false, getUserId());
} catch (RemoteException e) {
}
}
@@ -1160,7 +1160,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, null,
Activity.RESULT_OK, null, null, null, false, true,
- UserHandle.myUserId());
+ getUserId());
} catch (RemoteException e) {
}
}
@@ -1193,7 +1193,7 @@ class ContextImpl extends Context {
ActivityManagerNative.getDefault().broadcastIntent(
mMainThread.getApplicationThread(), intent, resolvedType, rd,
initialCode, initialData, initialExtras, null,
- true, true, UserHandle.myUserId());
+ true, true, getUserId());
} catch (RemoteException e) {
}
}
@@ -1208,7 +1208,7 @@ class ContextImpl extends Context {
try {
intent.setAllowFds(false);
ActivityManagerNative.getDefault().unbroadcastIntent(
- mMainThread.getApplicationThread(), intent, UserHandle.myUserId());
+ mMainThread.getApplicationThread(), intent, getUserId());
} catch (RemoteException e) {
}
}
@@ -1281,7 +1281,7 @@ class ContextImpl extends Context {
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler) {
- return registerReceiverInternal(receiver, UserHandle.myUserId(),
+ return registerReceiverInternal(receiver, getUserId(),
filter, broadcastPermission, scheduler, getOuterContext());
}
@@ -1337,12 +1337,12 @@ class ContextImpl extends Context {
@Override
public ComponentName startService(Intent service) {
- return startServiceAsUser(service, Process.myUserHandle());
+ return startServiceAsUser(service, mUser);
}
@Override
public boolean stopService(Intent service) {
- return stopServiceAsUser(service, Process.myUserHandle());
+ return stopServiceAsUser(service, mUser);
}
@Override
@@ -1446,7 +1446,7 @@ class ContextImpl extends Context {
arguments.setAllowFds(false);
}
return ActivityManagerNative.getDefault().startInstrumentation(
- className, profileFile, 0, arguments, null, UserHandle.myUserId());
+ className, profileFile, 0, arguments, null, getUserId());
} catch (RemoteException e) {
// System has crashed, nothing we can do.
}
@@ -1792,6 +1792,11 @@ class ContextImpl extends Context {
return file;
}
+ /** {@hide} */
+ public int getUserId() {
+ return mUser.getIdentifier();
+ }
+
static ContextImpl createSystemContext(ActivityThread mainThread) {
final ContextImpl context = new ContextImpl();
context.init(Resources.getSystem(), mainThread, Process.myUserHandle());
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index aad5487..e983299 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -22,6 +22,7 @@ import android.animation.AnimatorListenerAdapter;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
+import android.os.Debug;
import android.os.Handler;
import android.os.Looper;
import android.os.Parcel;
@@ -771,9 +772,9 @@ final class FragmentManagerImpl extends FragmentManager {
void moveToState(Fragment f, int newState, int transit, int transitionStyle,
boolean keepActive) {
- //if (DEBUG) Log.v(TAG, "moveToState: " + f
- // + " oldState=" + f.mState + " newState=" + newState
- // + " mRemoving=" + f.mRemoving + " Callers=" + Debug.getCallers(5));
+ if (DEBUG && false) Log.v(TAG, "moveToState: " + f
+ + " oldState=" + f.mState + " newState=" + newState
+ + " mRemoving=" + f.mRemoving + " Callers=" + Debug.getCallers(5));
// Fragments that are not currently added will sit in the onCreate() state.
if ((!f.mAdded || f.mDetached) && newState > Fragment.CREATED) {
@@ -1112,6 +1113,9 @@ final class FragmentManagerImpl extends FragmentManager {
if (DEBUG) Log.v(TAG, "add: " + fragment);
makeActive(fragment);
if (!fragment.mDetached) {
+ if (mAdded.contains(fragment)) {
+ throw new IllegalStateException("Fragment already added: " + fragment);
+ }
mAdded.add(fragment);
fragment.mAdded = true;
fragment.mRemoving = false;
@@ -1128,6 +1132,14 @@ final class FragmentManagerImpl extends FragmentManager {
if (DEBUG) Log.v(TAG, "remove: " + fragment + " nesting=" + fragment.mBackStackNesting);
final boolean inactive = !fragment.isInBackStack();
if (!fragment.mDetached || inactive) {
+ if (false) {
+ // Would be nice to catch a bad remove here, but we need
+ // time to test this to make sure we aren't crashes cases
+ // where it is not a problem.
+ if (!mAdded.contains(fragment)) {
+ throw new IllegalStateException("Fragment not added: " + fragment);
+ }
+ }
if (mAdded != null) {
mAdded.remove(fragment);
}
@@ -1200,6 +1212,7 @@ final class FragmentManagerImpl extends FragmentManager {
if (fragment.mAdded) {
// We are not already in back stack, so need to remove the fragment.
if (mAdded != null) {
+ if (DEBUG) Log.v(TAG, "remove from detach: " + fragment);
mAdded.remove(fragment);
}
if (fragment.mHasMenu && fragment.mMenuVisible) {
@@ -1219,6 +1232,10 @@ final class FragmentManagerImpl extends FragmentManager {
if (mAdded == null) {
mAdded = new ArrayList<Fragment>();
}
+ if (mAdded.contains(fragment)) {
+ throw new IllegalStateException("Fragment already added: " + fragment);
+ }
+ if (DEBUG) Log.v(TAG, "add from attach: " + fragment);
mAdded.add(fragment);
fragment.mAdded = true;
if (fragment.mHasMenu && fragment.mMenuVisible) {
@@ -1717,19 +1734,18 @@ final class FragmentManagerImpl extends FragmentManager {
FragmentState fs = fms.mActive[i];
if (fs != null) {
Fragment f = fs.instantiate(mActivity, mParent);
- if (DEBUG) Log.v(TAG, "restoreAllState: adding #" + i + ": " + f);
+ if (DEBUG) Log.v(TAG, "restoreAllState: active #" + i + ": " + f);
mActive.add(f);
// Now that the fragment is instantiated (or came from being
// retained above), clear mInstance in case we end up re-restoring
// from this FragmentState again.
fs.mInstance = null;
} else {
- if (DEBUG) Log.v(TAG, "restoreAllState: adding #" + i + ": (null)");
mActive.add(null);
if (mAvailIndices == null) {
mAvailIndices = new ArrayList<Integer>();
}
- if (DEBUG) Log.v(TAG, "restoreAllState: adding avail #" + i);
+ if (DEBUG) Log.v(TAG, "restoreAllState: avail #" + i);
mAvailIndices.add(i);
}
}
@@ -1760,7 +1776,10 @@ final class FragmentManagerImpl extends FragmentManager {
"No instantiated fragment for index #" + fms.mAdded[i]));
}
f.mAdded = true;
- if (DEBUG) Log.v(TAG, "restoreAllState: making added #" + i + ": " + f);
+ if (DEBUG) Log.v(TAG, "restoreAllState: added #" + i + ": " + f);
+ if (mAdded.contains(f)) {
+ throw new IllegalStateException("Already added!");
+ }
mAdded.add(f);
}
} else {
@@ -1772,8 +1791,13 @@ final class FragmentManagerImpl extends FragmentManager {
mBackStack = new ArrayList<BackStackRecord>(fms.mBackStack.length);
for (int i=0; i<fms.mBackStack.length; i++) {
BackStackRecord bse = fms.mBackStack[i].instantiate(this);
- if (DEBUG) Log.v(TAG, "restoreAllState: adding bse #" + i
+ if (DEBUG) {
+ Log.v(TAG, "restoreAllState: back stack #" + i
+ " (index " + bse.mIndex + "): " + bse);
+ LogWriter logw = new LogWriter(Log.VERBOSE, TAG);
+ PrintWriter pw = new PrintWriter(logw);
+ bse.dump(" ", pw, false);
+ }
mBackStack.add(bse);
if (bse.mIndex >= 0) {
setBackStackIndex(bse.mIndex, bse);
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index 1e61e10..3d656c7 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -97,13 +97,13 @@ public class StatusBarManager {
}
/**
- * Expand the notifications.
+ * Expand the notifications panel.
*/
- public void expandNotifications() {
+ public void expandNotificationsPanel() {
try {
final IStatusBarService svc = getService();
if (svc != null) {
- svc.expandNotifications();
+ svc.expandNotificationsPanel();
}
} catch (RemoteException ex) {
// system process is dead anyway.
@@ -112,13 +112,13 @@ public class StatusBarManager {
}
/**
- * Collapse the notifications.
+ * Collapse the notifications and settings panels.
*/
- public void collapseNotifications() {
+ public void collapsePanels() {
try {
final IStatusBarService svc = getService();
if (svc != null) {
- svc.collapseNotifications();
+ svc.collapsePanels();
}
} catch (RemoteException ex) {
// system process is dead anyway.
@@ -127,28 +127,13 @@ public class StatusBarManager {
}
/**
- * Expand the quick settings.
+ * Expand the settings panel.
*/
- public void expandQuickSettings() {
+ public void expandSettingsPanel() {
try {
final IStatusBarService svc = getService();
if (svc != null) {
- svc.expandQuickSettings();
- }
- } catch (RemoteException ex) {
- // system process is dead anyway.
- throw new RuntimeException(ex);
- }
- }
-
- /**
- * Collapse the quick settings.
- */
- public void collapseQuickSettings() {
- try {
- final IStatusBarService svc = getService();
- if (svc != null) {
- svc.collapseQuickSettings();
+ svc.expandSettingsPanel();
}
} catch (RemoteException ex) {
// system process is dead anyway.
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index d7f1c9f..f859599 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -64,7 +64,9 @@ public class FullBackup {
/**
* Copy data from a socket to the given File location on permanent storage. The
- * modification time and access mode of the resulting file will be set if desired.
+ * modification time and access mode of the resulting file will be set if desired,
+ * although group/all rwx modes will be stripped: the restored file will not be
+ * accessible from outside the target application even if the original file was.
* If the {@code type} parameter indicates that the result should be a directory,
* the socket parameter may be {@code null}; even if it is valid, no data will be
* read from it in this case.
@@ -79,8 +81,9 @@ public class FullBackup {
* @param type Must be either {@link BackupAgent#TYPE_FILE} for ordinary file data
* or {@link BackupAgent#TYPE_DIRECTORY} for a directory.
* @param mode Unix-style file mode (as used by the chmod(2) syscall) to be set on
- * the output file or directory. If this parameter is negative then neither
- * the mode nor the mtime parameters will be used.
+ * the output file or directory. group/all rwx modes are stripped even if set
+ * in this parameter. If this parameter is negative then neither
+ * the mode nor the mtime values will be applied to the restored file.
* @param mtime A timestamp in the standard Unix epoch that will be imposed as the
* last modification time of the output file. if the {@code mode} parameter is
* negative then this parameter will be ignored.
@@ -105,8 +108,6 @@ public class FullBackup {
if (!parent.exists()) {
// in practice this will only be for the default semantic directories,
// and using the default mode for those is appropriate.
- // TODO: support the edge case of apps that have adjusted the
- // permissions on these core directories
parent.mkdirs();
}
out = new FileOutputStream(outFile);
@@ -146,6 +147,8 @@ public class FullBackup {
// Now twiddle the state to match the backup, assuming all went well
if (mode >= 0 && outFile != null) {
try {
+ // explicitly prevent emplacement of files accessible by outside apps
+ mode &= 0700;
Libcore.os.chmod(outFile.getPath(), (int)mode);
} catch (ErrnoException e) {
e.rethrowAsIOException();
diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java
index 185fb5a..cb61a71 100644
--- a/core/java/android/appwidget/AppWidgetHost.java
+++ b/core/java/android/appwidget/AppWidgetHost.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import android.app.ActivityThread;
import android.content.Context;
+import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
@@ -57,6 +58,9 @@ public class AppWidgetHost {
class Callbacks extends IAppWidgetHost.Stub {
public void updateAppWidget(int appWidgetId, RemoteViews views) {
+ if (isLocalBinder() && views != null) {
+ views = views.clone();
+ }
Message msg = mHandler.obtainMessage(HANDLE_UPDATE);
msg.arg1 = appWidgetId;
msg.obj = views;
@@ -64,6 +68,9 @@ public class AppWidgetHost {
}
public void providerChanged(int appWidgetId, AppWidgetProviderInfo info) {
+ if (isLocalBinder() && info != null) {
+ info = info.clone();
+ }
Message msg = mHandler.obtainMessage(HANDLE_PROVIDER_CHANGED);
msg.arg1 = appWidgetId;
msg.obj = info;
@@ -225,6 +232,10 @@ public class AppWidgetHost {
throw new SecurityException("Disallowed call for uid " + uid);
}
+ private boolean isLocalBinder() {
+ return Process.myPid() == Binder.getCallingPid();
+ }
+
/**
* Stop listening to changes for this AppWidget.
*/
diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java
index 5ef3d39..5074480 100644
--- a/core/java/android/appwidget/AppWidgetProviderInfo.java
+++ b/core/java/android/appwidget/AppWidgetProviderInfo.java
@@ -281,6 +281,28 @@ public class AppWidgetProviderInfo implements Parcelable {
out.writeInt(this.widgetFeatures);
}
+ @Override
+ public AppWidgetProviderInfo clone() {
+ AppWidgetProviderInfo that = new AppWidgetProviderInfo();
+ that.provider = this.provider == null ? null : this.provider.clone();
+ that.minWidth = this.minWidth;
+ that.minHeight = this.minHeight;
+ that.minResizeWidth = this.minResizeHeight;
+ that.minResizeHeight = this.minResizeHeight;
+ that.updatePeriodMillis = this.updatePeriodMillis;
+ that.initialLayout = that.initialLayout;
+ that.initialKeyguardLayout = this.initialKeyguardLayout;
+ that.configure = this.configure == null ? null : this.configure.clone();
+ that.label = this.label == null ? null : this.label.substring(0);
+ that.icon = this.icon;
+ that.previewImage = this.previewImage;
+ that.autoAdvanceViewId = this.autoAdvanceViewId;
+ that.resizeMode = this.resizeMode;
+ that.widgetCategory = this.widgetCategory;
+ that.widgetFeatures = this.widgetFeatures;
+ return that;
+ }
+
public int describeContents() {
return 0;
}
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java
index 4999a2d..564a804 100644
--- a/core/java/android/content/SyncManager.java
+++ b/core/java/android/content/SyncManager.java
@@ -777,8 +777,8 @@ public class SyncManager implements OnAccountsUpdateListener {
}
// Cap the delay
- long maxSyncRetryTimeInSeconds = Settings.Secure.getLong(mContext.getContentResolver(),
- Settings.Secure.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
+ long maxSyncRetryTimeInSeconds = Settings.Global.getLong(mContext.getContentResolver(),
+ Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
DEFAULT_MAX_SYNC_RETRY_TIME_IN_SECONDS);
if (newDelayInMs > maxSyncRetryTimeInSeconds * 1000) {
newDelayInMs = maxSyncRetryTimeInSeconds * 1000;
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 58a0f13..28e320b 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -46,9 +46,7 @@ public final class DisplayManager {
* The status is provided as a {@link WifiDisplayStatus} object in the
* {@link #EXTRA_WIFI_DISPLAY_STATUS} extra.
* </p><p>
- * This broadcast is only sent to registered receivers with the
- * {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY} permission and can
- * only be sent by the system.
+ * This broadcast is only sent to registered receivers and can only be sent by the system.
* </p>
* @hide
*/
@@ -163,6 +161,9 @@ public final class DisplayManager {
* <p>
* Automatically remembers the display after a successful connection, if not
* already remembered.
+ * </p><p>
+ * Requires {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY} to connect
+ * to unknown displays. No permissions are required to connect to already known displays.
* </p>
*
* @param deviceAddress The MAC address of the device to which we should connect.
@@ -187,6 +188,8 @@ public final class DisplayManager {
* The display must already be remembered for this call to succeed. In other words,
* we must already have successfully connected to the display at least once and then
* not forgotten it.
+ * </p><p>
+ * Requires {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY}.
* </p>
*
* @param deviceAddress The MAC address of the device to rename.
@@ -202,6 +205,8 @@ public final class DisplayManager {
* Forgets a previously remembered Wifi display.
* <p>
* Automatically disconnects from the display if currently connected to it.
+ * </p><p>
+ * Requires {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY}.
* </p>
*
* @param deviceAddress The MAC address of the device to forget.
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index 4b6fb53..79aad78 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -28,13 +28,14 @@ interface IDisplayManager {
void registerCallback(in IDisplayManagerCallback callback);
- // Requires CONFIGURE_WIFI_DISPLAY permission.
+ // No permissions required.
void scanWifiDisplays();
- // Requires CONFIGURE_WIFI_DISPLAY permission.
+ // Requires CONFIGURE_WIFI_DISPLAY permission to connect to an unknown device.
+ // No permissions required to connect to a known device.
void connectWifiDisplay(String address);
- // Requires CONFIGURE_WIFI_DISPLAY permission.
+ // No permissions required.
void disconnectWifiDisplay();
// Requires CONFIGURE_WIFI_DISPLAY permission.
@@ -43,6 +44,6 @@ interface IDisplayManager {
// Requires CONFIGURE_WIFI_DISPLAY permission.
void forgetWifiDisplay(String address);
- // Requires CONFIGURE_WIFI_DISPLAY permission.
+ // No permissions required.
WifiDisplayStatus getWifiDisplayStatus();
}
diff --git a/core/java/android/net/CaptivePortalTracker.java b/core/java/android/net/CaptivePortalTracker.java
index 24dc898..9b11094 100644
--- a/core/java/android/net/CaptivePortalTracker.java
+++ b/core/java/android/net/CaptivePortalTracker.java
@@ -89,12 +89,12 @@ public class CaptivePortalTracker extends StateMachine {
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
mContext.registerReceiver(mReceiver, filter);
- mServer = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.CAPTIVE_PORTAL_SERVER);
+ mServer = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.CAPTIVE_PORTAL_SERVER);
if (mServer == null) mServer = DEFAULT_SERVER;
- mIsCaptivePortalCheckEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;
+ mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;
addState(mDefaultState);
addState(mNoActiveNetworkState, mDefaultState);
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index a570473..6ff1a33 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -330,6 +330,14 @@ public class ConnectivityManager {
public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI;
+ /**
+ * Default value for {@link Settings.Global#CONNECTIVITY_CHANGE_DELAY} in
+ * milliseconds.
+ *
+ * @hide
+ */
+ public static final int CONNECTIVITY_CHANGE_DELAY_DEFAULT = 3000;
+
private final IConnectivityManager mService;
public static boolean isNetworkTypeValid(int networkType) {
diff --git a/core/java/android/net/DnsPinger.java b/core/java/android/net/DnsPinger.java
index 11acabe..66f0fd0 100644
--- a/core/java/android/net/DnsPinger.java
+++ b/core/java/android/net/DnsPinger.java
@@ -295,8 +295,8 @@ public final class DnsPinger extends Handler {
}
private InetAddress getDefaultDns() {
- String dns = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.DEFAULT_DNS_SERVER);
+ String dns = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.DEFAULT_DNS_SERVER);
if (dns == null || dns.length() == 0) {
dns = mContext.getResources().getString(
com.android.internal.R.string.config_default_dns_server);
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 54a2273..b3ab385 100755
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -37,6 +37,7 @@ import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Pair;
@@ -7744,7 +7745,7 @@ public final class ContactsContract {
intent.setSourceBounds(target);
intent.putExtra(EXTRA_MODE, mode);
intent.putExtra(EXTRA_EXCLUDE_MIMES, excludeMimes);
- context.startActivity(intent);
+ context.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
}
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 965e488..550713d 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -32,16 +32,19 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.SQLException;
+import android.net.ConnectivityManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Bundle;
+import android.os.DropBoxManager;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.Build.VERSION_CODES;
import android.speech.tts.TextToSpeech;
import android.text.TextUtils;
import android.util.AndroidException;
@@ -799,7 +802,7 @@ public final class Settings {
if (mCallGetCommand != null) {
try {
Bundle args = null;
- if (userHandle != UserHandle.myUserId()) {
+ if (!isSelf) {
args = new Bundle();
args.putInt(CALL_METHOD_USER_KEY, userHandle);
}
@@ -917,6 +920,7 @@ public final class Settings {
MOVED_TO_GLOBAL.add(Global.DEVICE_PROVISIONED);
MOVED_TO_GLOBAL.add(Global.INSTALL_NON_MARKET_APPS);
MOVED_TO_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED);
+ MOVED_TO_GLOBAL.add(Global.HTTP_PROXY);
// these are moving directly from system to global
MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON);
@@ -1487,47 +1491,64 @@ public final class Settings {
@Deprecated
public static final String MODE_RINGER = Global.MODE_RINGER;
- //TODO: deprecate static IP constants
/**
* Whether to use static IP and other static network attributes.
* <p>
* Set to 1 for true and 0 for false.
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
/**
* The static IP address.
* <p>
* Example: "192.168.1.51"
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_STATIC_IP = "wifi_static_ip";
/**
* If using static IP, the gateway's IP address.
* <p>
* Example: "192.168.1.1"
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
/**
* If using static IP, the net mask.
* <p>
* Example: "255.255.255.0"
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
/**
* If using static IP, the primary DNS's IP address.
* <p>
* Example: "192.168.1.1"
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
/**
* If using static IP, the secondary DNS's IP address.
* <p>
* Example: "192.168.1.2"
+ *
+ * @deprecated Use {@link WifiManager} instead
*/
+ @Deprecated
public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
@@ -2326,10 +2347,10 @@ public final class Settings {
public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED;
/**
- * @deprecated Use {@link android.provider.Settings.Secure#HTTP_PROXY} instead
+ * @deprecated Use {@link android.provider.Settings.Global#HTTP_PROXY} instead
*/
@Deprecated
- public static final String HTTP_PROXY = Secure.HTTP_PROXY;
+ public static final String HTTP_PROXY = Global.HTTP_PROXY;
/**
* @deprecated Use {@link android.provider.Settings.Global#INSTALL_NON_MARKET_APPS} instead
@@ -2633,10 +2654,8 @@ public final class Settings {
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
- MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_NUM_ARP_PINGS);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
- MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_RSSI_FETCH_INTERVAL_MS);
MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE);
MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT);
@@ -2645,6 +2664,37 @@ public final class Settings {
MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS);
MOVED_TO_GLOBAL.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS);
MOVED_TO_GLOBAL.add(Settings.Global.WTF_IS_FATAL);
+ MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD);
+ MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD);
+ MOVED_TO_GLOBAL.add(Settings.Global.SEND_ACTION_APP_ERROR);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_AGE_SECONDS);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_MAX_FILES);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_KB);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_PERCENT);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_RESERVE_PERCENT);
+ MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_TAG_PREFIX);
+ MOVED_TO_GLOBAL.add(Settings.Global.ERROR_LOGCAT_PREFIX);
+ MOVED_TO_GLOBAL.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL);
+ MOVED_TO_GLOBAL.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD);
+ MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE);
+ MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES);
+ MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES);
+ MOVED_TO_GLOBAL.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS);
+ MOVED_TO_GLOBAL.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY);
+ MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);
+ MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_SERVER);
+ MOVED_TO_GLOBAL.add(Settings.Global.NSD_ON);
+ MOVED_TO_GLOBAL.add(Settings.Global.SET_INSTALL_LOCATION);
+ MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_INSTALL_LOCATION);
+ MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY);
+ MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY);
+ MOVED_TO_GLOBAL.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT);
+ MOVED_TO_GLOBAL.add(Settings.Global.HTTP_PROXY);
+ MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST);
+ MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT);
+ MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
+ MOVED_TO_GLOBAL.add(Settings.Global.SET_GLOBAL_HTTP_PROXY);
+ MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_DNS_SERVER);
}
/**
@@ -3054,6 +3104,7 @@ public final class Settings {
/**
* @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead
*/
+ @Deprecated
public static final String DATA_ROAMING = Global.DATA_ROAMING;
/**
@@ -3105,45 +3156,13 @@ public final class Settings {
public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods";
/**
- * Host name and port for global http proxy. Uses ':' seperator for between host and port
- * TODO - deprecate in favor of global_http_proxy_host, etc
- */
- public static final String HTTP_PROXY = "http_proxy";
-
- /**
- * Host name for global http proxy. Set via ConnectivityManager.
- * @hide
- */
- public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host";
-
- /**
- * Integer host port for global http proxy. Set via ConnectivityManager.
- * @hide
- */
- public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port";
-
- /**
- * Exclusion list for global proxy. This string contains a list of comma-separated
- * domains where the global proxy does not apply. Domains should be listed in a comma-
- * separated list. Example of acceptable formats: ".domain1.com,my.domain2.com"
- * Use ConnectivityManager to set/get.
- * @hide
- */
- public static final String GLOBAL_HTTP_PROXY_EXCLUSION_LIST =
- "global_http_proxy_exclusion_list";
-
- /**
- * Enables the UI setting to allow the user to specify the global HTTP proxy
- * and associated exclusion list.
- * @hide
- */
- public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy";
-
- /**
- * Setting for default DNS in case nobody suggests one
- * @hide
+ * Host name and port for global http proxy. Uses ':' seperator for
+ * between host and port.
+ *
+ * @deprecated Use {@link Global#HTTP_PROXY}
*/
- public static final String DEFAULT_DNS_SERVER = "default_dns_server";
+ @Deprecated
+ public static final String HTTP_PROXY = Global.HTTP_PROXY;
/**
* @deprecated Use {@link android.provider.Settings.Global#INSTALL_NON_MARKET_APPS} instead
@@ -3215,27 +3234,6 @@ public final class Settings {
"lock_screen_owner_info_enabled";
/**
- * @deprecated Use {@link android.provider.Settings.Global#DISPLAY_SIZE_FORCED} instead
- * @hide
- */
- @Deprecated
- public static final String DISPLAY_SIZE_FORCED = Global.DISPLAY_SIZE_FORCED;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DISPLAY_DENSITY_FORCED} instead
- * @hide
- */
- @Deprecated
- public static final String DISPLAY_DENSITY_FORCED = Global.DISPLAY_DENSITY_FORCED;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#ASSISTED_GPS_ENABLED} instead
- * @hide
- */
- @Deprecated
- public static final String ASSISTED_GPS_ENABLED = Global.ASSISTED_GPS_ENABLED;
-
- /**
* The Logging ID (a unique 64-bit value) as a hex string.
* Used as a pseudonymous identifier for logging.
* @deprecated This identifier is poorly initialized and has
@@ -3251,44 +3249,6 @@ public final class Settings {
public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE;
/**
- * @deprecated Use {@link android.provider.Settings.Global#TETHER_SUPPORTED} instead
- * @hide
- */
- @Deprecated
- public static final String TETHER_SUPPORTED = Global.TETHER_SUPPORTED;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#TETHER_DUN_REQUIRED} instead
- * @hide
- */
- @Deprecated
- public static final String TETHER_DUN_REQUIRED = Global.TETHER_DUN_REQUIRED;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#TETHER_DUN_REQUIRED} instead
- * @hide
- */
- @Deprecated
- public static final String TETHER_DUN_APN = Global.TETHER_DUN_APN;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DATA_ACTIVITY_TIMEOUT_MOBILE}
- * instead
- * @hide
- */
- @Deprecated
- public static final String DATA_ACTIVITY_TIMEOUT_MOBILE =
- Global.DATA_ACTIVITY_TIMEOUT_MOBILE;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DATA_ACTIVITY_TIMEOUT_MOBILE}
- * instead
- * @hide
- */
- @Deprecated
- public static final String DATA_ACTIVITY_TIMEOUT_WIFI = Global.DATA_ACTIVITY_TIMEOUT_WIFI;
-
- /**
* No longer supported.
*/
public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
@@ -3304,13 +3264,6 @@ public final class Settings {
public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
/**
- * @deprecated Use {@link android.provider.Settings.Global#SAMPLING_PROFILER_MS} instead
- * @hide
- */
- @Deprecated
- public static final String SAMPLING_PROFILER_MS = Global.SAMPLING_PROFILER_MS;
-
- /**
* Settings classname to launch when Settings is clicked from All
* Applications. Needed because of user testing between the old
* and new Settings apps.
@@ -3347,7 +3300,7 @@ public final class Settings {
"enabled_accessibility_services";
/**
- * List of the accessibility services to which the user has graned
+ * List of the accessibility services to which the user has granted
* permission to put the device into touch exploration mode.
*
* @hide
@@ -3366,7 +3319,7 @@ public final class Settings {
* <p>
* Note: The JavaScript based screen-reader is served by the
* Google infrastructure and enable users with disabilities to
- * efficiantly navigate in and explore web content.
+ * efficiently navigate in and explore web content.
* </p>
* <p>
* This property represents a boolean value.
@@ -3378,7 +3331,7 @@ public final class Settings {
/**
* The URL for the injected JavaScript based screen-reader used
- * for providing accessiblity of content in WebView.
+ * for providing accessibility of content in WebView.
* <p>
* Note: The JavaScript based screen-reader is served by the
* Google infrastructure and enable users with disabilities to
@@ -3562,14 +3515,6 @@ public final class Settings {
@Deprecated
public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
- /**
- * @deprecated Use {@link android.provider.Settings.Global#WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON}
- * instead.
- * {@hide}
- */
- @Deprecated
- public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON =
- Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON;
/**
* @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY}
@@ -3580,15 +3525,6 @@ public final class Settings {
Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY;
/**
- * @deprecated Use {@link android.provider.Settings.Global#WIFI_COUNTRY_CODE}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String WIFI_COUNTRY_CODE = Global.WIFI_COUNTRY_CODE;
-
-
- /**
* @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT}
* instead.
*/
@@ -3604,39 +3540,6 @@ public final class Settings {
public static final String WIFI_ON = Global.WIFI_ON;
/**
- * Used to save the Wifi_ON state prior to tethering.
- * This state will be checked to restore Wifi after
- * the user turns off tethering.
- *
- * @hide
- * @deprecated Use {@link android.provider.Settings.Global#WIFI_SAVED_STATE}
- * instead.
- */
- @Deprecated
- public static final String WIFI_SAVED_STATE = Global.WIFI_SAVED_STATE;
-
- /**
- * AP SSID
- *
- * @hide
- */
- public static final String WIFI_AP_SSID = "wifi_ap_ssid";
-
- /**
- * AP security
- *
- * @hide
- */
- public static final String WIFI_AP_SECURITY = "wifi_ap_security";
-
- /**
- * AP passphrase
- *
- * @hide
- */
- public static final String WIFI_AP_PASSWD = "wifi_ap_passwd";
-
- /**
* The acceptable packet loss percentage (range 0 - 100) before trying
* another AP on the same network.
* @deprecated This setting is not used.
@@ -3700,8 +3603,9 @@ public final class Settings {
public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
/**
- * Whether the Wi-Fi watchdog is enabled.
+ * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead
*/
+ @Deprecated
public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
/**
@@ -3733,66 +3637,6 @@ public final class Settings {
public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
/**
- * ms delay before rechecking an 'online' wifi connection when it is thought to be unstable.
- * @deprecated This setting is not used.
- * @hide
- */
- @Deprecated
- public static final String WIFI_WATCHDOG_ARP_CHECK_INTERVAL_MS =
- "wifi_watchdog_arp_interval_ms";
-
- /**
- * ms delay interval between rssi polling when the signal is known to be weak
- * @deprecated This setting is not used.
- * @hide
- */
- @Deprecated
- public static final String WIFI_WATCHDOG_RSSI_FETCH_INTERVAL_MS =
- "wifi_watchdog_rssi_fetch_interval_ms";
-
- /**
- * Number of ARP pings per check.
- * @deprecated This setting is not used.
- * @hide
- */
- @Deprecated
- public static final String WIFI_WATCHDOG_NUM_ARP_PINGS = "wifi_watchdog_num_arp_pings";
-
- /**
- * Minimum number of responses to the arp pings to consider the test 'successful'.
- * @deprecated This setting is not used.
- * @hide
- */
- @Deprecated
- public static final String WIFI_WATCHDOG_MIN_ARP_RESPONSES =
- "wifi_watchdog_min_arp_responses";
-
- /**
- * Timeout on ARP pings
- * @deprecated This setting is not used.
- * @hide
- */
- @Deprecated
- public static final String WIFI_WATCHDOG_ARP_PING_TIMEOUT_MS =
- "wifi_watchdog_arp_ping_timeout_ms";
-
- /**
- * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and
- * the setting needs to be set to 0 to disable it.
- * @hide
- */
- public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED =
- "wifi_watchdog_poor_network_test_enabled";
-
- /**
- * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and
- * needs to be set to 0 to disable it.
- * @hide
- */
- public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED =
- "wifi_suspend_optimizations_enabled";
-
- /**
* @deprecated Use
* {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead
*/
@@ -3800,52 +3644,21 @@ public final class Settings {
public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT;
/**
- * The operational wifi frequency band
- * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO},
- * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or
- * {@link WifiManager#WIFI_FREQUENCY_BAND_2GHZ}
- *
- * @hide
- */
- public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band";
-
- /**
- * The Wi-Fi peer-to-peer device name
- * @hide
- */
- public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name";
-
- /**
- * Setting to turn off captive portal detection. Feature is enabled by default and
- * the setting needs to be set to 0 to disable it.
- * @hide
- */
- public static final String CAPTIVE_PORTAL_DETECTION_ENABLED =
- "captive_portal_detection_enabled";
-
- /**
- * The server used for captive portal detection upon a new conection. A 204 response
- * code from the server is used for validation.
- * @hide
- */
- public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
-
- /**
* @deprecated Use
* {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
*/
+ @Deprecated
public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
/**
- * Whether network service discovery is enabled.
- * @hide
- */
- public static final String NSD_ON = "nsd_on";
-
- /**
- * Whether background data usage is allowed by the user. See
- * ConnectivityManager for more info.
+ * Whether background data usage is allowed.
+ *
+ * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH},
+ * availability of background data depends on several
+ * combined factors. When background data is unavailable,
+ * {@link ConnectivityManager#getActiveNetworkInfo()} will
+ * now appear disconnected.
*/
@Deprecated
public static final String BACKGROUND_DATA = "background_data";
@@ -3858,27 +3671,6 @@ public final class Settings {
= "allowed_geolocation_origins";
/**
- * @deprecated Use {@link android.provider.Settings.Global#MOBILE_DATA} instead
- * @hide
- */
- @Deprecated
- public static final String MOBILE_DATA = Global.MOBILE_DATA;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#CDMA_ROAMING_MODE} instead
- * @hide
- */
- @Deprecated
- public static final String CDMA_ROAMING_MODE = Global.CDMA_ROAMING_MODE;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#CDMA_ROAMING_MODE} instead
- * @hide
- */
- @Deprecated
- public static final String CDMA_SUBSCRIPTION_MODE = Global.CDMA_SUBSCRIPTION_MODE;
-
- /**
* The preferred network mode 7 = Global
* 6 = EvDo only
* 5 = CDMA w/o EvDo
@@ -3902,14 +3694,6 @@ public final class Settings {
public static final String PREFERRED_TTY_MODE =
"preferred_tty_mode";
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#CDMA_CELL_BROADCAST_SMS} instead
- * @hide
- */
- @Deprecated
- public static final String CDMA_CELL_BROADCAST_SMS = Global.CDMA_CELL_BROADCAST_SMS;
-
/**
* The cdma subscription 0 = Subscription from RUIM, when available
* 1 = Subscription from NV
@@ -3935,18 +3719,6 @@ public final class Settings {
public static final String TTY_MODE_ENABLED = "tty_mode_enabled";
/**
- * The number of milliseconds to delay before sending out Connectivyt Change broadcasts
- * @hide
- */
- public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay";
-
- /**
- * Default value for CONNECTIVITY_CHANGE_DELAY in milliseconds.
- * @hide
- */
- public static final int CONNECTIVITY_CHANGE_DELAY_DEFAULT = 3000;
-
- /**
* Controls whether settings backup is enabled.
* Type: int ( 0 = disabled, 1 = enabled )
* @hide
@@ -3982,252 +3754,6 @@ public final class Settings {
public static final String LAST_SETUP_SHOWN = "last_setup_shown";
/**
- * How frequently (in seconds) to check the memory status of the
- * device.
- * @hide
- */
- public static final String MEMCHECK_INTERVAL = "memcheck_interval";
-
- /**
- * Max frequency (in seconds) to log memory check stats, in realtime
- * seconds. This allows for throttling of logs when the device is
- * running for large amounts of time.
- * @hide
- */
- public static final String MEMCHECK_LOG_REALTIME_INTERVAL =
- "memcheck_log_realtime_interval";
-
- /**
- * Boolean indicating whether rebooting due to system memory checks
- * is enabled.
- * @hide
- */
- public static final String MEMCHECK_SYSTEM_ENABLED = "memcheck_system_enabled";
-
- /**
- * How many bytes the system process must be below to avoid scheduling
- * a soft reboot. This reboot will happen when it is next determined
- * to be a good time.
- * @hide
- */
- public static final String MEMCHECK_SYSTEM_SOFT_THRESHOLD = "memcheck_system_soft";
-
- /**
- * How many bytes the system process must be below to avoid scheduling
- * a hard reboot. This reboot will happen immediately.
- * @hide
- */
- public static final String MEMCHECK_SYSTEM_HARD_THRESHOLD = "memcheck_system_hard";
-
- /**
- * How many bytes the phone process must be below to avoid scheduling
- * a soft restart. This restart will happen when it is next determined
- * to be a good time.
- * @hide
- */
- public static final String MEMCHECK_PHONE_SOFT_THRESHOLD = "memcheck_phone_soft";
-
- /**
- * How many bytes the phone process must be below to avoid scheduling
- * a hard restart. This restart will happen immediately.
- * @hide
- */
- public static final String MEMCHECK_PHONE_HARD_THRESHOLD = "memcheck_phone_hard";
-
- /**
- * Boolean indicating whether restarting the phone process due to
- * memory checks is enabled.
- * @hide
- */
- public static final String MEMCHECK_PHONE_ENABLED = "memcheck_phone_enabled";
-
- /**
- * First time during the day it is okay to kill processes
- * or reboot the device due to low memory situations. This number is
- * in seconds since midnight.
- * @hide
- */
- public static final String MEMCHECK_EXEC_START_TIME = "memcheck_exec_start_time";
-
- /**
- * Last time during the day it is okay to kill processes
- * or reboot the device due to low memory situations. This number is
- * in seconds since midnight.
- * @hide
- */
- public static final String MEMCHECK_EXEC_END_TIME = "memcheck_exec_end_time";
-
- /**
- * How long the screen must have been off in order to kill processes
- * or reboot. This number is in seconds. A value of -1 means to
- * entirely disregard whether the screen is on.
- * @hide
- */
- public static final String MEMCHECK_MIN_SCREEN_OFF = "memcheck_min_screen_off";
-
- /**
- * How much time there must be until the next alarm in order to kill processes
- * or reboot. This number is in seconds. Note: this value must be
- * smaller than {@link #MEMCHECK_RECHECK_INTERVAL} or else it will
- * always see an alarm scheduled within its time.
- * @hide
- */
- public static final String MEMCHECK_MIN_ALARM = "memcheck_min_alarm";
-
- /**
- * How frequently to check whether it is a good time to restart things,
- * if the device is in a bad state. This number is in seconds. Note:
- * this value must be larger than {@link #MEMCHECK_MIN_ALARM} or else
- * the alarm to schedule the recheck will always appear within the
- * minimum "do not execute now" time.
- * @hide
- */
- public static final String MEMCHECK_RECHECK_INTERVAL = "memcheck_recheck_interval";
-
- /**
- * How frequently (in DAYS) to reboot the device. If 0, no reboots
- * will occur.
- * @hide
- */
- public static final String REBOOT_INTERVAL = "reboot_interval";
-
- /**
- * First time during the day it is okay to force a reboot of the
- * device (if REBOOT_INTERVAL is set). This number is
- * in seconds since midnight.
- * @hide
- */
- public static final String REBOOT_START_TIME = "reboot_start_time";
-
- /**
- * The window of time (in seconds) after each REBOOT_INTERVAL in which
- * a reboot can be executed. If 0, a reboot will always be executed at
- * exactly the given time. Otherwise, it will only be executed if
- * the device is idle within the window.
- * @hide
- */
- public static final String REBOOT_WINDOW = "reboot_window";
-
- /**
- * Threshold values for the duration and level of a discharge cycle, under
- * which we log discharge cycle info.
- * @hide
- */
- public static final String BATTERY_DISCHARGE_DURATION_THRESHOLD =
- "battery_discharge_duration_threshold";
- /** @hide */
- public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold";
-
- /**
- * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents
- * on application crashes and ANRs. If this is disabled, the crash/ANR dialog
- * will never display the "Report" button.
- * Type: int ( 0 = disallow, 1 = allow )
- * @hide
- */
- public static final String SEND_ACTION_APP_ERROR = "send_action_app_error";
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#WTF_IS_FATAL} instead
- * @hide
- */
- @Deprecated
- public static final String WTF_IS_FATAL = Global.WTF_IS_FATAL;
-
- /**
- * Maximum age of entries kept by {@link com.android.internal.os.IDropBoxManagerService}.
- * @hide
- */
- public static final String DROPBOX_AGE_SECONDS =
- "dropbox_age_seconds";
- /**
- * Maximum number of entry files which {@link com.android.internal.os.IDropBoxManagerService} will keep around.
- * @hide
- */
- public static final String DROPBOX_MAX_FILES =
- "dropbox_max_files";
- /**
- * Maximum amount of disk space used by {@link com.android.internal.os.IDropBoxManagerService} no matter what.
- * @hide
- */
- public static final String DROPBOX_QUOTA_KB =
- "dropbox_quota_kb";
- /**
- * Percent of free disk (excluding reserve) which {@link com.android.internal.os.IDropBoxManagerService} will use.
- * @hide
- */
- public static final String DROPBOX_QUOTA_PERCENT =
- "dropbox_quota_percent";
- /**
- * Percent of total disk which {@link com.android.internal.os.IDropBoxManagerService} will never dip into.
- * @hide
- */
- public static final String DROPBOX_RESERVE_PERCENT =
- "dropbox_reserve_percent";
- /**
- * Prefix for per-tag dropbox disable/enable settings.
- * @hide
- */
- public static final String DROPBOX_TAG_PREFIX =
- "dropbox:";
- /**
- * Lines of logcat to include with system crash/ANR/etc. reports,
- * as a prefix of the dropbox tag of the report type.
- * For example, "logcat_for_system_server_anr" controls the lines
- * of logcat captured with system server ANR reports. 0 to disable.
- * @hide
- */
- public static final String ERROR_LOGCAT_PREFIX =
- "logcat_for_";
-
- /**
- * The interval in minutes after which the amount of free storage left on the
- * device is logged to the event log
- * @hide
- */
- public static final String SYS_FREE_STORAGE_LOG_INTERVAL =
- "sys_free_storage_log_interval";
-
- /**
- * Threshold for the amount of change in disk free space required to report the amount of
- * free space. Used to prevent spamming the logs when the disk free space isn't changing
- * frequently.
- * @hide
- */
- public static final String DISK_FREE_CHANGE_REPORTING_THRESHOLD =
- "disk_free_change_reporting_threshold";
-
-
- /**
- * Minimum percentage of free storage on the device that is used to determine if
- * the device is running low on storage. The default is 10.
- * <p>Say this value is set to 10, the device is considered running low on storage
- * if 90% or more of the device storage is filled up.
- * @hide
- */
- public static final String SYS_STORAGE_THRESHOLD_PERCENTAGE =
- "sys_storage_threshold_percentage";
-
- /**
- * Maximum byte size of the low storage threshold. This is to ensure
- * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in
- * an overly large threshold for large storage devices. Currently this
- * must be less than 2GB. This default is 500MB.
- * @hide
- */
- public static final String SYS_STORAGE_THRESHOLD_MAX_BYTES =
- "sys_storage_threshold_max_bytes";
-
- /**
- * Minimum bytes of free storage on the device before the data
- * partition is considered full. By default, 1 MB is reserved
- * to avoid system-wide SQLite disk full exceptions.
- * @hide
- */
- public static final String SYS_STORAGE_FULL_THRESHOLD_BYTES =
- "sys_storage_full_threshold_bytes";
-
- /**
* The interval in milliseconds after which Wi-Fi is considered idle.
* When idle, it is possible for the device to be switched from Wi-Fi to
* the mobile data network.
@@ -4239,143 +3765,6 @@ public final class Settings {
public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS;
/**
- * The interval in milliseconds to issue wake up scans when wifi needs
- * to connect. This is necessary to connect to an access point when
- * device is on the move and the screen is off.
- * @hide
- * @deprecated Use {@link android.provider.Settings.Global#WIFI_FRAMEWORK_SCAN_INTERVAL_MS}
- * instead.
- */
- @Deprecated
- public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS =
- Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS;
-
- /**
- * The interval in milliseconds to scan as used by the wifi supplicant
- * @hide
- * @deprecated Use {@link android.provider.Settings.Global#WIFI_SUPPLICANT_SCAN_INTERVAL_MS}
- * instead.
- */
- @Deprecated
- public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS =
- Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_POLL_INTERVAL_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_POLL_INTERVAL_MS =
- Global.PDP_WATCHDOG_POLL_INTERVAL_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_LONG_POLL_INTERVAL_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS =
- Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS =
- Global.PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_TRIGGER_PACKET_COUNT}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT =
- Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_ERROR_POLL_COUNT}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_ERROR_POLL_COUNT =
- Global.PDP_WATCHDOG_ERROR_POLL_COUNT;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT =
- Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS =
- Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS =
- Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#GPRS_REGISTER_CHECK_PERIOD_MS}
- * instead.
- * @hide
- */
- @Deprecated
- public static final String GPRS_REGISTER_CHECK_PERIOD_MS =
- Global.GPRS_REGISTER_CHECK_PERIOD_MS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#NITZ_UPDATE_SPACING} instead
- * @hide
- */
- public static final String NITZ_UPDATE_SPACING = Global.NITZ_UPDATE_SPACING;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#NITZ_UPDATE_SPACING} instead
- * @hide
- */
- public static final String NITZ_UPDATE_DIFF = Global.NITZ_UPDATE_DIFF;
-
- /**
- * The maximum reconnect delay for short network outages or when the network is suspended
- * due to phone use.
- * @hide
- */
- public static final String SYNC_MAX_RETRY_DELAY_IN_SECONDS =
- "sync_max_retry_delay_in_seconds";
-
- /**
- * @deprecated Use {@link Settings.Global#SMS_OUTGOING_CHECK_INTERVAL_MS} instead.
- * @hide
- */
- public static final String SMS_OUTGOING_CHECK_INTERVAL_MS =
- Global.SMS_OUTGOING_CHECK_INTERVAL_MS;
-
- /**
- * @deprecated Use {@link Settings.Global#SMS_OUTGOING_CHECK_MAX_COUNT} instead.
- * @hide
- */
- public static final String SMS_OUTGOING_CHECK_MAX_COUNT =
- Global.SMS_OUTGOING_CHECK_MAX_COUNT;
-
- /**
* The global search provider chosen by the user (if multiple global
* search providers are installed). This will be the provider returned
* by {@link SearchManager#getGlobalSearchActivity()} if it's still
@@ -4595,127 +3984,6 @@ public final class Settings {
public static final String UI_NIGHT_MODE = "ui_night_mode";
/**
- * Let user pick default install location.
- * @hide
- */
- public static final String SET_INSTALL_LOCATION = "set_install_location";
-
- /**
- * Default install location value.
- * 0 = auto, let system decide
- * 1 = internal
- * 2 = sdcard
- * @hide
- */
- public static final String DEFAULT_INSTALL_LOCATION = "default_install_location";
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_POLLING_SEC} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_POLLING_SEC = Global.THROTTLE_POLLING_SEC;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_THRESHOLD_BYTES} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_THRESHOLD_BYTES = Global.THROTTLE_THRESHOLD_BYTES;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_VALUE_KBITSPS} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_VALUE_KBITSPS = Global.THROTTLE_VALUE_KBITSPS;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_VALUE_KBITSPS} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_RESET_DAY = Global.THROTTLE_RESET_DAY;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_NOTIFICATION_TYPE} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_NOTIFICATION_TYPE = Global.THROTTLE_NOTIFICATION_TYPE;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_HELP_URI} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_HELP_URI = Global.THROTTLE_HELP_URI;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#THROTTLE_MAX_NTP_CACHE_AGE_SEC} instead
- * @hide
- */
- @Deprecated
- public static final String THROTTLE_MAX_NTP_CACHE_AGE_SEC =
- Global.THROTTLE_MAX_NTP_CACHE_AGE_SEC;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DOWNLOAD_MAX_BYTES_OVER_MOBILE} instead
- * @hide
- */
- @Deprecated
- public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE =
- Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE} instead
- * @hide
- */
- @Deprecated
- public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE =
- Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE;
-
- /**
- * ms during which to consume extra events related to Inet connection condition
- * after a transtion to fully-connected
- * @hide
- */
- public static final String INET_CONDITION_DEBOUNCE_UP_DELAY =
- "inet_condition_debounce_up_delay";
-
- /**
- * ms during which to consume extra events related to Inet connection condtion
- * after a transtion to partly-connected
- * @hide
- */
- public static final String INET_CONDITION_DEBOUNCE_DOWN_DELAY =
- "inet_condition_debounce_down_delay";
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#SETUP_PREPAID_DATA_SERVICE_URL} instead
- * @hide
- */
- @Deprecated
- public static final String SETUP_PREPAID_DATA_SERVICE_URL =
- Global.SETUP_PREPAID_DATA_SERVICE_URL;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#SETUP_PREPAID_DETECTION_TARGET_URL} instead
- * @hide
- */
- @Deprecated
- public static final String SETUP_PREPAID_DETECTION_TARGET_URL =
- Global.SETUP_PREPAID_DETECTION_TARGET_URL;
-
- /**
- * @deprecated Use {@link android.provider.Settings.Global#SETUP_PREPAID_DETECTION_REDIR_HOST} instead
- * @hide
- */
- @Deprecated
- public static final String SETUP_PREPAID_DETECTION_REDIR_HOST =
- Global.SETUP_PREPAID_DETECTION_REDIR_HOST;
-
- /**
* Whether screensavers are enabled.
* @hide
*/
@@ -4750,130 +4018,6 @@ public final class Settings {
*/
public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component";
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_ENABLED = Global.NETSTATS_ENABLED;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_POLL_INTERVAL = Global.NETSTATS_POLL_INTERVAL;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_TIME_CACHE_MAX_AGE = Global.NETSTATS_TIME_CACHE_MAX_AGE;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_GLOBAL_ALERT_BYTES = Global.NETSTATS_GLOBAL_ALERT_BYTES;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_SAMPLE_ENABLED = Global.NETSTATS_SAMPLE_ENABLED;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_REPORT_XT_OVER_DEV = Global.NETSTATS_REPORT_XT_OVER_DEV;
-
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_DEV_BUCKET_DURATION = Global.NETSTATS_DEV_BUCKET_DURATION;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_DEV_PERSIST_BYTES = Global.NETSTATS_DEV_PERSIST_BYTES;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_DEV_ROTATE_AGE = Global.NETSTATS_DEV_ROTATE_AGE;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_DEV_DELETE_AGE = Global.NETSTATS_DEV_DELETE_AGE;
-
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_BUCKET_DURATION = Global.NETSTATS_UID_BUCKET_DURATION;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_PERSIST_BYTES = Global.NETSTATS_UID_PERSIST_BYTES;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_ROTATE_AGE = Global.NETSTATS_UID_ROTATE_AGE;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_DELETE_AGE = Global.NETSTATS_UID_DELETE_AGE;
-
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_TAG_BUCKET_DURATION = Global.NETSTATS_UID_TAG_BUCKET_DURATION;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_TAG_PERSIST_BYTES = Global.NETSTATS_UID_TAG_PERSIST_BYTES;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_TAG_ROTATE_AGE = Global.NETSTATS_UID_TAG_ROTATE_AGE;
- /** @deprecated The NETSTATS_* symbols live in Settings.Global.* now
- * {@hide} */
- @Deprecated
- public static final String NETSTATS_UID_TAG_DELETE_AGE = Global.NETSTATS_UID_TAG_DELETE_AGE;
-
- /** Preferred NTP server. {@hide}
- * @deprecated moved to Settings.Global */
- public static final String NTP_SERVER = Global.NTP_SERVER;
-
- /** Timeout in milliseconds to wait for NTP server. {@hide}
- * @deprecated moved to Settings.Global */
- public static final String NTP_TIMEOUT = Global.NTP_TIMEOUT;
-
- /** Autofill server address (Used in WebView/browser).
- * @deprecated moved to Settings.Global
- * {@hide} */
- public static final String WEB_AUTOFILL_QUERY_URL = Global.WEB_AUTOFILL_QUERY_URL;
-
- /**
- * Whether the package manager should send package verification broadcasts for verifiers to
- * review apps prior to installation.
- * @deprecated moved to Settings.Global
- * 1 = request apps to be verified prior to installation, if a verifier exists.
- * 0 = do not verify apps before installation
- * {@hide}
- */
- @Deprecated
- public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable";
-
- /** Timeout for package verification.
- * @deprecated moved to Settings.Global
- * {@hide} */
- @Deprecated
- public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout";
-
- /** Default response code for package verification.
- * @deprecated moved to Settings.Global
- * {@hide} */
- @Deprecated
- public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response";
-
- /** {@hide} */
- public static final String
- READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default";
-
- /**
- * Duration in milliseconds before pre-authorized URIs for the contacts
- * provider should expire.
- * @hide
- */
- public static final String CONTACTS_PREAUTH_URI_EXPIRATION =
- "contacts_preauth_uri_expiration";
-
/**
* This are the settings to be backed up.
*
@@ -4966,6 +4110,15 @@ public final class Settings {
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global");
/**
+ * Setting whether the global gesture for enabling accessibility is enabled.
+ * If this gesture is enabled the user will be able to perfrom it to enable
+ * the accessibility state without visiting the settings app.
+ * @hide
+ */
+ public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED =
+ "enable_accessibility_global_gesture_enabled";
+
+ /**
* Whether Airplane Mode is on.
*/
public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
@@ -5650,19 +4803,6 @@ public final class Settings {
public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
/**
- * ms delay interval between rssi polling when the signal is known to be weak
- * @hide
- */
- public static final String WIFI_WATCHDOG_RSSI_FETCH_INTERVAL_MS =
- "wifi_watchdog_rssi_fetch_interval_ms";
-
- /**
- * Number of ARP pings per check.
- * @hide
- */
- public static final String WIFI_WATCHDOG_NUM_ARP_PINGS = "wifi_watchdog_num_arp_pings";
-
- /**
* Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and
* the setting needs to be set to 0 to disable it.
* @hide
@@ -5765,6 +4905,262 @@ public final class Settings {
*/
public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
+ /**
+ * Threshold values for the duration and level of a discharge cycle,
+ * under which we log discharge cycle info.
+ *
+ * @hide
+ */
+ public static final String
+ BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold";
+
+ /** @hide */
+ public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold";
+
+ /**
+ * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR
+ * intents on application crashes and ANRs. If this is disabled, the
+ * crash/ANR dialog will never display the "Report" button.
+ * <p>
+ * Type: int (0 = disallow, 1 = allow)
+ *
+ * @hide
+ */
+ public static final String SEND_ACTION_APP_ERROR = "send_action_app_error";
+
+ /**
+ * Maximum age of entries kept by {@link DropBoxManager}.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds";
+
+ /**
+ * Maximum number of entry files which {@link DropBoxManager} will keep
+ * around.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_MAX_FILES = "dropbox_max_files";
+
+ /**
+ * Maximum amount of disk space used by {@link DropBoxManager} no matter
+ * what.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb";
+
+ /**
+ * Percent of free disk (excluding reserve) which {@link DropBoxManager}
+ * will use.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent";
+
+ /**
+ * Percent of total disk which {@link DropBoxManager} will never dip
+ * into.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent";
+
+ /**
+ * Prefix for per-tag dropbox disable/enable settings.
+ *
+ * @hide
+ */
+ public static final String DROPBOX_TAG_PREFIX = "dropbox:";
+
+ /**
+ * Lines of logcat to include with system crash/ANR/etc. reports, as a
+ * prefix of the dropbox tag of the report type. For example,
+ * "logcat_for_system_server_anr" controls the lines of logcat captured
+ * with system server ANR reports. 0 to disable.
+ *
+ * @hide
+ */
+ public static final String ERROR_LOGCAT_PREFIX = "logcat_for_";
+
+ /**
+ * The interval in minutes after which the amount of free storage left
+ * on the device is logged to the event log
+ *
+ * @hide
+ */
+ public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval";
+
+ /**
+ * Threshold for the amount of change in disk free space required to
+ * report the amount of free space. Used to prevent spamming the logs
+ * when the disk free space isn't changing frequently.
+ *
+ * @hide
+ */
+ public static final String
+ DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold";
+
+ /**
+ * Minimum percentage of free storage on the device that is used to
+ * determine if the device is running low on storage. The default is 10.
+ * <p>
+ * Say this value is set to 10, the device is considered running low on
+ * storage if 90% or more of the device storage is filled up.
+ *
+ * @hide
+ */
+ public static final String
+ SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage";
+
+ /**
+ * Maximum byte size of the low storage threshold. This is to ensure
+ * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in an
+ * overly large threshold for large storage devices. Currently this must
+ * be less than 2GB. This default is 500MB.
+ *
+ * @hide
+ */
+ public static final String
+ SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes";
+
+ /**
+ * Minimum bytes of free storage on the device before the data partition
+ * is considered full. By default, 1 MB is reserved to avoid system-wide
+ * SQLite disk full exceptions.
+ *
+ * @hide
+ */
+ public static final String
+ SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes";
+
+ /**
+ * The maximum reconnect delay for short network outages or when the
+ * network is suspended due to phone use.
+ *
+ * @hide
+ */
+ public static final String
+ SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds";
+
+ /**
+ * The number of milliseconds to delay before sending out
+ * {@link ConnectivityManager#CONNECTIVITY_ACTION} broadcasts.
+ *
+ * @hide
+ */
+ public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay";
+
+ /**
+ * Setting to turn off captive portal detection. Feature is enabled by
+ * default and the setting needs to be set to 0 to disable it.
+ *
+ * @hide
+ */
+ public static final String
+ CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
+
+ /**
+ * The server used for captive portal detection upon a new conection. A
+ * 204 response code from the server is used for validation.
+ *
+ * @hide
+ */
+ public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
+
+ /**
+ * Whether network service discovery is enabled.
+ *
+ * @hide
+ */
+ public static final String NSD_ON = "nsd_on";
+
+ /**
+ * Let user pick default install location.
+ *
+ * @hide
+ */
+ public static final String SET_INSTALL_LOCATION = "set_install_location";
+
+ /**
+ * Default install location value.
+ * 0 = auto, let system decide
+ * 1 = internal
+ * 2 = sdcard
+ * @hide
+ */
+ public static final String DEFAULT_INSTALL_LOCATION = "default_install_location";
+
+ /**
+ * ms during which to consume extra events related to Inet connection
+ * condition after a transtion to fully-connected
+ *
+ * @hide
+ */
+ public static final String
+ INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay";
+
+ /**
+ * ms during which to consume extra events related to Inet connection
+ * condtion after a transtion to partly-connected
+ *
+ * @hide
+ */
+ public static final String
+ INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay";
+
+ /** {@hide} */
+ public static final String
+ READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default";
+
+ /**
+ * Host name and port for global http proxy. Uses ':' seperator for
+ * between host and port.
+ */
+ public static final String HTTP_PROXY = "http_proxy";
+
+ /**
+ * Host name for global http proxy. Set via ConnectivityManager.
+ *
+ * @hide
+ */
+ public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host";
+
+ /**
+ * Integer host port for global http proxy. Set via ConnectivityManager.
+ *
+ * @hide
+ */
+ public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port";
+
+ /**
+ * Exclusion list for global proxy. This string contains a list of
+ * comma-separated domains where the global proxy does not apply.
+ * Domains should be listed in a comma- separated list. Example of
+ * acceptable formats: ".domain1.com,my.domain2.com" Use
+ * ConnectivityManager to set/get.
+ *
+ * @hide
+ */
+ public static final String
+ GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list";
+
+ /**
+ * Enables the UI setting to allow the user to specify the global HTTP
+ * proxy and associated exclusion list.
+ *
+ * @hide
+ */
+ public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy";
+
+ /**
+ * Setting for default DNS in case nobody suggests one
+ *
+ * @hide
+ */
+ public static final String DEFAULT_DNS_SERVER = "default_dns_server";
+
// Populated lazily, guarded by class object:
private static NameValueCache sNameValueCache = new NameValueCache(
SYS_PROP_SETTING_VERSION,
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 12eb800..111f959 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2150,7 +2150,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* Group of bits indicating that RTL properties resolution is done.
*/
static final int ALL_RTL_PROPERTIES_RESOLVED = PFLAG2_LAYOUT_DIRECTION_RESOLVED |
- PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_ALIGNMENT_RESOLVED;
+ PFLAG2_TEXT_DIRECTION_RESOLVED |
+ PFLAG2_TEXT_ALIGNMENT_RESOLVED |
+ PFLAG2_PADDING_RESOLVED |
+ PFLAG2_DRAWABLE_RESOLVED;
// There are a couple of flags left in mPrivateFlags2
@@ -2784,14 +2787,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@hide}
*/
@ViewDebug.ExportedProperty(category = "padding")
- protected int mPaddingLeft = UNDEFINED_PADDING;
+ protected int mPaddingLeft = 0;
/**
* The right padding in pixels, that is the distance in pixels between the
* right edge of this view and the right edge of its content.
* {@hide}
*/
@ViewDebug.ExportedProperty(category = "padding")
- protected int mPaddingRight = UNDEFINED_PADDING;
+ protected int mPaddingRight = 0;
/**
* The top padding in pixels, that is the distance in pixels between the
* top edge of this view and the top edge of its content.
@@ -3299,6 +3302,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
int overScrollMode = mOverScrollMode;
boolean initializeScrollbars = false;
+ boolean leftPaddingDefined = false;
+ boolean rightPaddingDefined = false;
+ boolean startPaddingDefined = false;
+ boolean endPaddingDefined = false;
+
final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
final int N = a.getIndexCount();
@@ -3312,10 +3320,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
padding = a.getDimensionPixelSize(attr, -1);
mUserPaddingLeftInitial = padding;
mUserPaddingRightInitial = padding;
+ leftPaddingDefined = true;
+ rightPaddingDefined = true;
break;
case com.android.internal.R.styleable.View_paddingLeft:
leftPadding = a.getDimensionPixelSize(attr, -1);
mUserPaddingLeftInitial = leftPadding;
+ leftPaddingDefined = true;
break;
case com.android.internal.R.styleable.View_paddingTop:
topPadding = a.getDimensionPixelSize(attr, -1);
@@ -3323,15 +3334,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
case com.android.internal.R.styleable.View_paddingRight:
rightPadding = a.getDimensionPixelSize(attr, -1);
mUserPaddingRightInitial = rightPadding;
+ rightPaddingDefined = true;
break;
case com.android.internal.R.styleable.View_paddingBottom:
bottomPadding = a.getDimensionPixelSize(attr, -1);
break;
case com.android.internal.R.styleable.View_paddingStart:
startPadding = a.getDimensionPixelSize(attr, UNDEFINED_PADDING);
+ startPaddingDefined = true;
break;
case com.android.internal.R.styleable.View_paddingEnd:
endPadding = a.getDimensionPixelSize(attr, UNDEFINED_PADDING);
+ endPaddingDefined = true;
break;
case com.android.internal.R.styleable.View_scrollX:
x = a.getDimensionPixelOffset(attr, 0);
@@ -3629,16 +3643,30 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mUserPaddingRightInitial = padding;
}
+ // RTL compatibility mode: pre Jelly Bean MR1 case OR no RTL support case.
+ // left / right padding are used if defined (meaning here nothing to do). If they are not
+ // defined and start / end padding are defined (e.g. in Frameworks resources), then we use
+ // start / end and resolve them as left / right (layout direction is not taken into account).
+ if (isRtlCompatibilityMode()) {
+ if (!leftPaddingDefined && startPaddingDefined) {
+ leftPadding = startPadding;
+ }
+ if (!rightPaddingDefined && endPaddingDefined) {
+ rightPadding = endPadding;
+ }
+ }
+
// If the user specified the padding (either with android:padding or
// android:paddingLeft/Top/Right/Bottom), use this padding, otherwise
// use the default padding or the padding from the background drawable
- // (stored at this point in mPadding*)
+ // (stored at this point in mPadding*). Padding resolution will happen later if
+ // RTL is supported.
mUserPaddingLeftInitial = leftPadding >= 0 ? leftPadding : mPaddingLeft;
mUserPaddingRightInitial = rightPadding >= 0 ? rightPadding : mPaddingRight;
internalSetPadding(
- mUserPaddingLeftInitial != UNDEFINED_PADDING ? mUserPaddingLeftInitial : 0,
+ mUserPaddingLeftInitial,
topPadding >= 0 ? topPadding : mPaddingTop,
- mUserPaddingRightInitial != UNDEFINED_PADDING ? mUserPaddingRightInitial : 0,
+ mUserPaddingRightInitial,
bottomPadding >= 0 ? bottomPadding : mPaddingBottom);
if (viewFlagMasks != 0) {
@@ -11569,6 +11597,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * Return true if we are in RTL compatibility mode (either before Jelly Bean MR1 or
+ * RTL not supported)
+ */
+ private boolean isRtlCompatibilityMode() {
+ final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
+ return targetSdkVersion < JELLY_BEAN_MR1 || !hasRtlSupport();
+ }
+
+ /**
* @return true if RTL properties need resolution.
*/
private boolean needRtlPropertiesResolution() {
@@ -11693,26 +11730,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @hide
*/
public void resolvePadding() {
- final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
- if (targetSdkVersion < JELLY_BEAN_MR1 || !hasRtlSupport()) {
- // Pre Jelly Bean MR1 case (compatibility mode) OR no RTL support case:
- // left / right padding are used if defined. If they are not defined and start / end
- // padding are defined (e.g. in Frameworks resources), then we use start / end and
- // resolve them as left / right (layout direction is not taken into account).
- if (mUserPaddingLeftInitial == UNDEFINED_PADDING &&
- mUserPaddingStart != UNDEFINED_PADDING) {
- mUserPaddingLeft = mUserPaddingStart;
- }
- if (mUserPaddingRightInitial == UNDEFINED_PADDING &&
- mUserPaddingEnd != UNDEFINED_PADDING) {
- mUserPaddingRight = mUserPaddingEnd;
- }
-
- mUserPaddingBottom = (mUserPaddingBottom >= 0) ? mUserPaddingBottom : mPaddingBottom;
-
- internalSetPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight,
- mUserPaddingBottom);
- } else {
+ if (!isRtlCompatibilityMode()) {
// Post Jelly Bean MR1 case: we need to take the resolved layout direction into account.
// If start / end padding are defined, they will be resolved (hence overriding) to
// left / right or right / left depending on the resolved layout direction.
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index 1286eb9..c013d85 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -1178,10 +1178,14 @@ public class ViewDebug {
private static void writeValue(BufferedWriter out, Object value) throws IOException {
if (value != null) {
- String output = value.toString().replace("\n", "\\n");
- out.write(String.valueOf(output.length()));
- out.write(",");
- out.write(output);
+ String output = "[EXCEPTION]";
+ try {
+ output = value.toString().replace("\n", "\\n");
+ } finally {
+ out.write(String.valueOf(output.length()));
+ out.write(",");
+ out.write(output);
+ }
} else {
out.write("4,null");
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 6db40ba..438f792 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1616,6 +1616,7 @@ public final class ViewRootImpl implements ViewParent,
mAttachInfo.mHardwareRenderer.setup(mWidth, mHeight);
if (!hwInitialized) {
mAttachInfo.mHardwareRenderer.invalidate(mHolder.getSurface());
+ mFullRedrawNeeded = true;
}
}
}
diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl
index 60238627..c3ef54c 100644
--- a/core/java/android/view/accessibility/IAccessibilityManager.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl
@@ -20,6 +20,7 @@ package android.view.accessibility;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.IAccessibilityServiceConnection;
import android.accessibilityservice.IAccessibilityServiceClient;
+import android.content.ComponentName;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.IAccessibilityInteractionConnection;
@@ -53,4 +54,7 @@ interface IAccessibilityManager {
in AccessibilityServiceInfo info);
void unregisterUiTestAutomationService(IAccessibilityServiceClient client);
+
+ void temporaryEnableAccessibilityStateUntilKeyguardRemoved(in ComponentName service,
+ boolean touchExplorationEnabled);
}
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index fea427d..4dbca23 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -1025,7 +1025,7 @@ class BrowserFrame extends Handler {
}
private float density() {
- return mContext.getResources().getDisplayMetrics().density;
+ return WebViewCore.getFixedDisplayDensity(mContext);
}
/**
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 1c47615..d68511c 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -1664,7 +1664,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
mTouchSlopSquare = slop * slop;
slop = configuration.getScaledDoubleTapSlop();
mDoubleTapSlopSquare = slop * slop;
- final float density = mContext.getResources().getDisplayMetrics().density;
+ final float density = WebViewCore.getFixedDisplayDensity(mContext);
// use one line height, 16 based on our current default font, for how
// far we allow a touch be away from the edge of a link
mNavSlop = (int) (16 * density);
@@ -1809,7 +1809,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
/* package */ void adjustDefaultZoomDensity(int zoomDensity) {
- final float density = mContext.getResources().getDisplayMetrics().density
+ final float density = WebViewCore.getFixedDisplayDensity(mContext)
* 100 / zoomDensity;
updateDefaultZoomDensity(density);
}
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 33fe834..3fb3ec6 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -2479,6 +2479,13 @@ public final class WebViewCore {
setupViewport(true);
}
+ static float getFixedDisplayDensity(Context context) {
+ // We make bad assumptions about multiplying and dividing density by 100,
+ // force them to be true with this hack
+ float density = context.getResources().getDisplayMetrics().density;
+ return ((int) (density * 100)) / 100.0f;
+ }
+
private void setupViewport(boolean updateViewState) {
if (mWebViewClassic == null || mSettings == null) {
// We've been destroyed or are being destroyed, return early
@@ -2523,14 +2530,13 @@ public final class WebViewCore {
// adjust the default scale to match the densityDpi
float adjust = 1.0f;
if (mViewportDensityDpi == -1) {
- adjust = mContext.getResources().getDisplayMetrics().density;
+ adjust = getFixedDisplayDensity(mContext);
} else if (mViewportDensityDpi > 0) {
adjust = (float) mContext.getResources().getDisplayMetrics().densityDpi
/ mViewportDensityDpi;
+ adjust = ((int) (adjust * 100)) / 100.0f;
}
- // We make bad assumptions about multiplying and dividing by 100, force
- // them to be true with this hack
- adjust = ((int) (adjust * 100)) / 100.0f;
+
// Remove any update density messages in flight.
// If the density is indeed different from WebView's default scale,
// a new message will be queued.
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 6264315..7f0af09 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -65,6 +65,7 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputConnectionWrapper;
import android.view.inputmethod.InputMethodManager;
+import android.widget.RemoteViews.OnClickHandler;
import com.android.internal.R;
@@ -5875,6 +5876,21 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
/**
+ * Sets up the onClickHandler to be used by the RemoteViewsAdapter when inflating RemoteViews
+ *
+ * @param handler The OnClickHandler to use when inflating RemoteViews.
+ *
+ * @hide
+ */
+ public void setRemoteViewsOnClickHandler(OnClickHandler handler) {
+ // Ensure that we don't already have a RemoteViewsAdapter that is bound to an existing
+ // service handling the specified intent.
+ if (mRemoteAdapter != null) {
+ mRemoteAdapter.setRemoteViewsOnClickHandler(handler);
+ }
+ }
+
+ /**
* This defers a notifyDataSetChanged on the pending RemoteViewsAdapter if it has not
* connected yet.
*/
diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java
index 2266cea..90e949a 100644
--- a/core/java/android/widget/AdapterViewAnimator.java
+++ b/core/java/android/widget/AdapterViewAnimator.java
@@ -31,6 +31,7 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.RemoteViews.OnClickHandler;
import java.util.ArrayList;
import java.util.HashMap;
@@ -992,6 +993,21 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
}
}
+ /**
+ * Sets up the onClickHandler to be used by the RemoteViewsAdapter when inflating RemoteViews
+ *
+ * @param handler The OnClickHandler to use when inflating RemoteViews.
+ *
+ * @hide
+ */
+ public void setRemoteViewsOnClickHandler(OnClickHandler handler) {
+ // Ensure that we don't already have a RemoteViewsAdapter that is bound to an existing
+ // service handling the specified intent.
+ if (mRemoteViewsAdapter != null) {
+ mRemoteViewsAdapter.setRemoteViewsOnClickHandler(handler);
+ }
+ }
+
@Override
public void setSelection(int position) {
setDisplayedChild(position);
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index 7ca8322..87396fb 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -789,7 +789,6 @@ public class ImageView extends View {
if (resizeWidth) {
int newWidth = (int)(desiredAspect * (heightSize - ptop - pbottom)) +
pleft + pright;
- widthSize = resolveAdjustedSize(newWidth, mMaxWidth, widthMeasureSpec);
if (newWidth <= widthSize) {
widthSize = newWidth;
done = true;
@@ -800,7 +799,6 @@ public class ImageView extends View {
if (!done && resizeHeight) {
int newHeight = (int)((widthSize - pleft - pright) / desiredAspect) +
ptop + pbottom;
- heightSize = resolveAdjustedSize(newHeight, mMaxHeight, heightMeasureSpec);
if (newHeight <= heightSize) {
heightSize = newHeight;
}
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 4b5dfb8..8d83774 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -237,12 +237,11 @@ public class RemoteViews implements Parcelable, Filter {
* @hide
*/
public void mergeRemoteViews(RemoteViews newRv) {
+ if (newRv == null) return;
// We first copy the new RemoteViews, as the process of merging modifies the way the actions
// reference the bitmap cache. We don't want to modify the object as it may need to
// be merged and applied multiple times.
- Parcel p = Parcel.obtain();
- newRv.writeToParcel(p, 0);
- RemoteViews copy = new RemoteViews(p);
+ RemoteViews copy = newRv.clone();
HashMap<String, Action> map = new HashMap<String, Action>();
if (mActions == null) {
@@ -261,7 +260,7 @@ public class RemoteViews implements Parcelable, Filter {
for (int i = 0; i < count; i++) {
Action a = newActions.get(i);
String key = newActions.get(i).getUniqueKey();
- int mergeBehavior = map.get(key).mergeBehavior();
+ int mergeBehavior = newActions.get(i).mergeBehavior();
if (map.containsKey(key) && mergeBehavior == Action.MERGE_REPLACE) {
mActions.remove(map.get(key));
map.remove(key);
@@ -530,9 +529,11 @@ public class RemoteViews implements Parcelable, Filter {
if (target instanceof AbsListView) {
AbsListView v = (AbsListView) target;
v.setRemoteViewsAdapter(intent);
+ v.setRemoteViewsOnClickHandler(handler);
} else if (target instanceof AdapterViewAnimator) {
AdapterViewAnimator v = (AdapterViewAnimator) target;
v.setRemoteViewsAdapter(intent);
+ v.setRemoteViewsOnClickHandler(handler);
}
}
@@ -1579,23 +1580,12 @@ public class RemoteViews implements Parcelable, Filter {
recalculateMemoryUsage();
}
- @Override
- public RemoteViews clone() {
- RemoteViews that;
- if (!hasLandscapeAndPortraitLayouts()) {
- that = new RemoteViews(mPackage, mLayoutId);
- if (mActions != null) {
- that.mActions = (ArrayList<Action>)mActions.clone();
- }
- } else {
- RemoteViews land = mLandscape.clone();
- RemoteViews port = mPortrait.clone();
- that = new RemoteViews(land, port);
- }
- // update the memory usage stats of the cloned RemoteViews
- that.recalculateMemoryUsage();
- return that;
+ public RemoteViews clone() {
+ Parcel p = Parcel.obtain();
+ writeToParcel(p, 0);
+ p.setDataPosition(0);
+ return new RemoteViews(p);
}
public String getPackage() {
diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java
index f0109ce..e481702 100644
--- a/core/java/android/widget/RemoteViewsAdapter.java
+++ b/core/java/android/widget/RemoteViewsAdapter.java
@@ -36,6 +36,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
+import android.widget.RemoteViews.OnClickHandler;
import com.android.internal.widget.IRemoteViewsAdapterConnection;
import com.android.internal.widget.IRemoteViewsFactory;
@@ -68,6 +69,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
private LayoutInflater mLayoutInflater;
private RemoteViewsAdapterServiceConnection mServiceConnection;
private WeakReference<RemoteAdapterConnectionCallback> mCallback;
+ private OnClickHandler mRemoteViewsOnClickHandler;
private FixedSizeRemoteViewsCache mCache;
private int mVisibleWindowLowerBound;
private int mVisibleWindowUpperBound;
@@ -277,11 +279,11 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
* @param view the RemoteViews that was loaded. If null, the RemoteViews was not loaded
* successfully.
*/
- public void onRemoteViewsLoaded(RemoteViews view) {
+ public void onRemoteViewsLoaded(RemoteViews view, OnClickHandler handler) {
try {
// Remove all the children of this layout first
removeAllViews();
- addView(view.apply(getContext(), this));
+ addView(view.apply(getContext(), this, handler));
} catch (Exception e) {
Log.e(TAG, "Failed to apply RemoteViews.");
}
@@ -330,7 +332,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
// Notify all the references for that position of the newly loaded RemoteViews
final LinkedList<RemoteViewsFrameLayout> refs = mReferences.get(pos);
for (final RemoteViewsFrameLayout ref : refs) {
- ref.onRemoteViewsLoaded(view);
+ ref.onRemoteViewsLoaded(view, mRemoteViewsOnClickHandler);
}
refs.clear();
@@ -421,7 +423,8 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
}
private RemoteViewsFrameLayout createLoadingView(int position, View convertView,
- ViewGroup parent, Object lock, LayoutInflater layoutInflater) {
+ ViewGroup parent, Object lock, LayoutInflater layoutInflater, OnClickHandler
+ handler) {
// Create and return a new FrameLayout, and setup the references for this position
final Context context = parent.getContext();
RemoteViewsFrameLayout layout = new RemoteViewsFrameLayout(context);
@@ -433,7 +436,8 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
if (mUserLoadingView != null) {
// Try to inflate user-specified loading view
try {
- View loadingView = mUserLoadingView.apply(parent.getContext(), parent);
+ View loadingView = mUserLoadingView.apply(parent.getContext(), parent,
+ handler);
loadingView.setTagInternal(com.android.internal.R.id.rowTypeId,
new Integer(0));
layout.addView(loadingView);
@@ -448,7 +452,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
// Use the size of the first row as a guide for the size of the loading view
if (mFirstViewHeight < 0) {
try {
- View firstView = mFirstView.apply(parent.getContext(), parent);
+ View firstView = mFirstView.apply(parent.getContext(), parent, handler);
firstView.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
@@ -815,6 +819,10 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
return mDataReady;
}
+ public void setRemoteViewsOnClickHandler(OnClickHandler handler) {
+ mRemoteViewsOnClickHandler = handler;
+ }
+
public void saveRemoteViewsCache() {
final Pair<Intent.FilterComparison, Integer> key = new Pair<Intent.FilterComparison,
Integer> (new Intent.FilterComparison(mIntent), mAppWidgetId);
@@ -1102,7 +1110,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
// Reuse the convert view where possible
if (layout != null) {
if (convertViewTypeId == typeId) {
- rv.reapply(context, convertViewChild);
+ rv.reapply(context, convertViewChild, mRemoteViewsOnClickHandler);
return layout;
}
layout.removeAllViews();
@@ -1111,7 +1119,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
}
// Otherwise, create a new view to be returned
- View newView = rv.apply(context, parent);
+ View newView = rv.apply(context, parent, mRemoteViewsOnClickHandler);
newView.setTagInternal(com.android.internal.R.id.rowTypeId,
new Integer(typeId));
layout.addView(newView);
@@ -1127,7 +1135,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
final RemoteViewsMetaData metaData = mCache.getMetaData();
synchronized (metaData) {
loadingView = metaData.createLoadingView(position, convertView, parent,
- mCache, mLayoutInflater);
+ mCache, mLayoutInflater, mRemoteViewsOnClickHandler);
}
return loadingView;
} finally {
@@ -1140,7 +1148,7 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
final RemoteViewsMetaData metaData = mCache.getMetaData();
synchronized (metaData) {
loadingView = metaData.createLoadingView(position, convertView, parent,
- mCache, mLayoutInflater);
+ mCache, mLayoutInflater, mRemoteViewsOnClickHandler);
}
mRequestedViews.add(position, loadingView);
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 0737b52..780f5b3 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -28,10 +28,9 @@ oneway interface IStatusBar
void updateNotification(IBinder key, in StatusBarNotification notification);
void removeNotification(IBinder key);
void disable(int state);
- void animateExpandNotifications();
- void animateCollapseNotifications();
- void animateExpandQuickSettings();
- void animateCollapseQuickSettings();
+ void animateExpandNotificationsPanel();
+ void animateExpandSettingsPanel();
+ void animateCollapsePanels();
void setSystemUiVisibility(int vis, int mask);
void topAppWindowChanged(boolean menuVisible);
void setImeWindowStatus(in IBinder token, int vis, int backDisposition);
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 60e2b34..600c27a 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -24,16 +24,15 @@ import com.android.internal.statusbar.StatusBarNotification;
/** @hide */
interface IStatusBarService
{
- void expandNotifications();
- void collapseNotifications();
- void expandQuickSettings();
- void collapseQuickSettings();
+ void expandNotificationsPanel();
+ void collapsePanels();
void disable(int what, IBinder token, String pkg);
void setIcon(String slot, String iconPackage, int iconId, int iconLevel, String contentDescription);
void setIconVisibility(String slot, boolean visible);
void removeIcon(String slot);
void topAppWindowChanged(boolean menuVisible);
void setImeWindowStatus(in IBinder token, int vis, int backDisposition);
+ void expandSettingsPanel();
// ---- Methods below are for use by the status bar policy services ----
// You need the STATUS_BAR_SERVICE permission
diff --git a/core/java/com/android/internal/view/RotationPolicy.java b/core/java/com/android/internal/view/RotationPolicy.java
index 98beadb..95130c8 100644
--- a/core/java/com/android/internal/view/RotationPolicy.java
+++ b/core/java/com/android/internal/view/RotationPolicy.java
@@ -23,6 +23,7 @@ import android.os.AsyncTask;
import android.os.Handler;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import android.view.IWindowManager;
@@ -55,16 +56,17 @@ public final class RotationPolicy {
*/
public static boolean isRotationLockToggleVisible(Context context) {
return isRotationLockToggleSupported(context) &&
- Settings.System.getInt(context.getContentResolver(),
- Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0) == 0;
+ Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0,
+ UserHandle.USER_CURRENT) == 0;
}
/**
* Returns true if rotation lock is enabled.
*/
public static boolean isRotationLocked(Context context) {
- return Settings.System.getInt(context.getContentResolver(),
- Settings.System.ACCELEROMETER_ROTATION, 0) == 0;
+ return Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.System.ACCELEROMETER_ROTATION, 0, UserHandle.USER_CURRENT) == 0;
}
/**
@@ -73,8 +75,9 @@ public final class RotationPolicy {
* Should be used by the rotation lock toggle.
*/
public static void setRotationLock(Context context, final boolean enabled) {
- Settings.System.putInt(context.getContentResolver(),
- Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0);
+ Settings.System.putIntForUser(context.getContentResolver(),
+ Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0,
+ UserHandle.USER_CURRENT);
AsyncTask.execute(new Runnable() {
@Override
@@ -100,8 +103,9 @@ public final class RotationPolicy {
* Should be used by Display settings and Accessibility settings.
*/
public static void setRotationLockForAccessibility(Context context, final boolean enabled) {
- Settings.System.putInt(context.getContentResolver(),
- Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, enabled ? 1 : 0);
+ Settings.System.putIntForUser(context.getContentResolver(),
+ Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, enabled ? 1 : 0,
+ UserHandle.USER_CURRENT);
AsyncTask.execute(new Runnable() {
@Override
@@ -121,16 +125,25 @@ public final class RotationPolicy {
}
/**
- * Registers a listener for rotation policy changes.
+ * Registers a listener for rotation policy changes affecting the caller's user
*/
public static void registerRotationPolicyListener(Context context,
RotationPolicyListener listener) {
+ registerRotationPolicyListener(context, listener, UserHandle.getCallingUserId());
+ }
+
+ /**
+ * Registers a listener for rotation policy changes affecting a specific user,
+ * or USER_ALL for all users.
+ */
+ public static void registerRotationPolicyListener(Context context,
+ RotationPolicyListener listener, int userHandle) {
context.getContentResolver().registerContentObserver(Settings.System.getUriFor(
Settings.System.ACCELEROMETER_ROTATION),
- false, listener.mObserver);
+ false, listener.mObserver, userHandle);
context.getContentResolver().registerContentObserver(Settings.System.getUriFor(
Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY),
- false, listener.mObserver);
+ false, listener.mObserver, userHandle);
}
/**
diff --git a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
index 26518eb..f8332c4 100644
--- a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
+++ b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
@@ -31,6 +31,7 @@ import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
import android.view.ViewRootImpl;
import com.android.internal.R;
@@ -55,23 +56,56 @@ public class PasswordEntryKeyboardHelper implements OnKeyboardActionListener {
private long[] mVibratePattern;
private boolean mEnableHaptics = false;
+ private static final int NUMERIC = 0;
+ private static final int QWERTY = 1;
+ private static final int QWERTY_SHIFTED = 2;
+ private static final int SYMBOLS = 3;
+ private static final int SYMBOLS_SHIFTED = 4;
+
+ int mLayouts[] = new int[] {
+ R.xml.password_kbd_numeric,
+ R.xml.password_kbd_qwerty,
+ R.xml.password_kbd_qwerty_shifted,
+ R.xml.password_kbd_symbols,
+ R.xml.password_kbd_symbols_shift
+ };
+
+ private boolean mUsingScreenWidth;
+
public PasswordEntryKeyboardHelper(Context context, KeyboardView keyboardView, View targetView) {
- this(context, keyboardView, targetView, true);
+ this(context, keyboardView, targetView, true, null);
}
public PasswordEntryKeyboardHelper(Context context, KeyboardView keyboardView, View targetView,
boolean useFullScreenWidth) {
+ this(context, keyboardView, targetView, useFullScreenWidth, null);
+ }
+
+ public PasswordEntryKeyboardHelper(Context context, KeyboardView keyboardView, View targetView,
+ boolean useFullScreenWidth, int layouts[]) {
mContext = context;
mTargetView = targetView;
mKeyboardView = keyboardView;
- if (useFullScreenWidth
- || mKeyboardView.getLayoutParams().width == ViewGroup.LayoutParams.MATCH_PARENT) {
- createKeyboards();
+ mKeyboardView.setOnKeyboardActionListener(this);
+ mUsingScreenWidth = useFullScreenWidth;
+ if (layouts != null) {
+ if (layouts.length != mLayouts.length) {
+ throw new RuntimeException("Wrong number of layouts");
+ }
+ for (int i = 0; i < mLayouts.length; i++) {
+ mLayouts[i] = layouts[i];
+ }
+ }
+ createKeyboards();
+ }
+
+ public void createKeyboards() {
+ LayoutParams lp = mKeyboardView.getLayoutParams();
+ if (mUsingScreenWidth || lp.width == ViewGroup.LayoutParams.MATCH_PARENT) {
+ createKeyboardsWithDefaultWidth();
} else {
- createKeyboardsWithSpecificSize(mKeyboardView.getLayoutParams().width,
- mKeyboardView.getLayoutParams().height);
+ createKeyboardsWithSpecificSize(lp.width, lp.height);
}
- mKeyboardView.setOnKeyboardActionListener(this);
}
public void setEnableHaptics(boolean enabled) {
@@ -82,46 +116,40 @@ public class PasswordEntryKeyboardHelper implements OnKeyboardActionListener {
return mKeyboardMode == KEYBOARD_MODE_ALPHA;
}
- private void createKeyboardsWithSpecificSize(int viewWidth, int viewHeight) {
- mNumericKeyboard = new PasswordEntryKeyboard(mContext, R.xml.password_kbd_numeric,
- viewWidth, viewHeight);
- mQwertyKeyboard = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_qwerty, R.id.mode_normal, viewWidth, viewHeight);
+ private void createKeyboardsWithSpecificSize(int width, int height) {
+ mNumericKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[NUMERIC], width, height);
+ mQwertyKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[QWERTY], R.id.mode_normal,
+ width, height);
mQwertyKeyboard.enableShiftLock();
- mQwertyKeyboardShifted = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_qwerty_shifted,
- R.id.mode_normal, viewWidth, viewHeight);
+ mQwertyKeyboardShifted = new PasswordEntryKeyboard(mContext, mLayouts[QWERTY_SHIFTED],
+ R.id.mode_normal, width, height);
mQwertyKeyboardShifted.enableShiftLock();
mQwertyKeyboardShifted.setShifted(true); // always shifted.
- mSymbolsKeyboard = new PasswordEntryKeyboard(mContext, R.xml.password_kbd_symbols,
- viewWidth, viewHeight);
+ mSymbolsKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[SYMBOLS], width, height);
mSymbolsKeyboard.enableShiftLock();
- mSymbolsKeyboardShifted = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_symbols_shift, viewWidth, viewHeight);
+ mSymbolsKeyboardShifted = new PasswordEntryKeyboard(mContext, mLayouts[SYMBOLS_SHIFTED],
+ width, height);
mSymbolsKeyboardShifted.enableShiftLock();
mSymbolsKeyboardShifted.setShifted(true); // always shifted
}
- private void createKeyboards() {
- mNumericKeyboard = new PasswordEntryKeyboard(mContext, R.xml.password_kbd_numeric);
- mQwertyKeyboard = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_qwerty, R.id.mode_normal);
+ private void createKeyboardsWithDefaultWidth() {
+ mNumericKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[NUMERIC]);
+ mQwertyKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[QWERTY], R.id.mode_normal);
mQwertyKeyboard.enableShiftLock();
- mQwertyKeyboardShifted = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_qwerty_shifted,
+ mQwertyKeyboardShifted = new PasswordEntryKeyboard(mContext, mLayouts[QWERTY_SHIFTED],
R.id.mode_normal);
mQwertyKeyboardShifted.enableShiftLock();
mQwertyKeyboardShifted.setShifted(true); // always shifted.
- mSymbolsKeyboard = new PasswordEntryKeyboard(mContext, R.xml.password_kbd_symbols);
+ mSymbolsKeyboard = new PasswordEntryKeyboard(mContext, mLayouts[SYMBOLS]);
mSymbolsKeyboard.enableShiftLock();
- mSymbolsKeyboardShifted = new PasswordEntryKeyboard(mContext,
- R.xml.password_kbd_symbols_shift);
+ mSymbolsKeyboardShifted = new PasswordEntryKeyboard(mContext, mLayouts[SYMBOLS_SHIFTED]);
mSymbolsKeyboardShifted.enableShiftLock();
mSymbolsKeyboardShifted.setShifted(true); // always shifted
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index a8bee4d..8dbaa26 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1578,6 +1578,12 @@
android:description="@string/permdesc_retrieve_window_info"
android:protectionLevel="signature" />
+ <!-- @hide Allows an application to temporary enable accessibility on the device. -->
+ <permission android:name="android.permission.TEMPORARY_ENABLE_ACCESSIBILITY"
+ android:label="@string/permlab_temporary_enable_accessibility"
+ android:description="@string/permdesc_temporary_enable_accessibility"
+ android:protectionLevel="signature" />
+
<!-- @hide Allows an application to magnify the content of a display. -->
<permission android:name="android.permission.MAGNIFY_DISPLAY"
android:label="@string/permlab_magnify_display"
diff --git a/core/res/res/drawable-hdpi/ic_coins_s.png b/core/res/res/drawable-hdpi/ic_coins_s.png
new file mode 100644
index 0000000..0ada1d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_coins_s.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_alarm.png b/core/res/res/drawable-hdpi/ic_lockscreen_alarm.png
new file mode 100644
index 0000000..d7a8cfc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lockscreen_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_sim.png b/core/res/res/drawable-hdpi/ic_lockscreen_sim.png
new file mode 100644
index 0000000..7cf9e36
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lockscreen_sim.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/lockscreen_protection_pattern.png b/core/res/res/drawable-hdpi/lockscreen_protection_pattern.png
new file mode 100644
index 0000000..681d8be
--- /dev/null
+++ b/core/res/res/drawable-hdpi/lockscreen_protection_pattern.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_delete.png b/core/res/res/drawable-hdpi/sym_keyboard_delete.png
index 59d78be..476d902 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_delete.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_enter.png b/core/res/res/drawable-hdpi/sym_keyboard_enter.png
new file mode 100644
index 0000000..d118af2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_keyboard_enter.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num0_no_plus.png b/core/res/res/drawable-hdpi/sym_keyboard_num0_no_plus.png
index 0e5f1e2..ad81bb3 100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num0_no_plus.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num0_no_plus.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num1.png b/core/res/res/drawable-hdpi/sym_keyboard_num1.png
index 0fc03ef..8d2468c 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num1.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num2.png b/core/res/res/drawable-hdpi/sym_keyboard_num2.png
index 283560b..cfa972b 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num2.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num3.png b/core/res/res/drawable-hdpi/sym_keyboard_num3.png
index 9a3b329..141833a 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num3.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num4.png b/core/res/res/drawable-hdpi/sym_keyboard_num4.png
index f13ff1a..07df14d 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num4.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num5.png b/core/res/res/drawable-hdpi/sym_keyboard_num5.png
index c251329..fbcc9bf 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num5.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num6.png b/core/res/res/drawable-hdpi/sym_keyboard_num6.png
index 4acba4c..9513b33 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num6.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num7.png b/core/res/res/drawable-hdpi/sym_keyboard_num7.png
index 14931c1..5ad25d8 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num7.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num8.png b/core/res/res/drawable-hdpi/sym_keyboard_num8.png
index d4973fd..97d5c0e 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num8.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_keyboard_num9.png b/core/res/res/drawable-hdpi/sym_keyboard_num9.png
index 49cec66..a7d6a83 100755..100644
--- a/core/res/res/drawable-hdpi/sym_keyboard_num9.png
+++ b/core/res/res/drawable-hdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_coins_s.png b/core/res/res/drawable-mdpi/ic_coins_s.png
new file mode 100644
index 0000000..3b8fd8a
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_coins_s.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_alarm.png b/core/res/res/drawable-mdpi/ic_lockscreen_alarm.png
new file mode 100644
index 0000000..330ade1
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_lockscreen_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_sim.png b/core/res/res/drawable-mdpi/ic_lockscreen_sim.png
new file mode 100644
index 0000000..2e259c3
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_lockscreen_sim.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/lockscreen_protection_pattern.png b/core/res/res/drawable-mdpi/lockscreen_protection_pattern.png
new file mode 100644
index 0000000..30bcea5
--- /dev/null
+++ b/core/res/res/drawable-mdpi/lockscreen_protection_pattern.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_delete.png b/core/res/res/drawable-mdpi/sym_keyboard_delete.png
index 43a033e..74b836a 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_delete.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_enter.png b/core/res/res/drawable-mdpi/sym_keyboard_enter.png
new file mode 100644
index 0000000..0fa53ac
--- /dev/null
+++ b/core/res/res/drawable-mdpi/sym_keyboard_enter.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num0_no_plus.png b/core/res/res/drawable-mdpi/sym_keyboard_num0_no_plus.png
index d23114d..9fefaea 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num0_no_plus.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num0_no_plus.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num1.png b/core/res/res/drawable-mdpi/sym_keyboard_num1.png
index aaac11b..1f37e32 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num1.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num2.png b/core/res/res/drawable-mdpi/sym_keyboard_num2.png
index 4372eb8..f899f78 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num2.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num3.png b/core/res/res/drawable-mdpi/sym_keyboard_num3.png
index 6f54c85..6a0f5ef 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num3.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num4.png b/core/res/res/drawable-mdpi/sym_keyboard_num4.png
index 3e50bb9..3a25bcd 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num4.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num5.png b/core/res/res/drawable-mdpi/sym_keyboard_num5.png
index c39ef44..064d4bf 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num5.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num6.png b/core/res/res/drawable-mdpi/sym_keyboard_num6.png
index ea88ceb..61ee0a6 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num6.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num7.png b/core/res/res/drawable-mdpi/sym_keyboard_num7.png
index ce800ba..b931d7b 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num7.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num8.png b/core/res/res/drawable-mdpi/sym_keyboard_num8.png
index 1a8ff94..f8d2891 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num8.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_keyboard_num9.png b/core/res/res/drawable-mdpi/sym_keyboard_num9.png
index 8b344c0..056d067 100644
--- a/core/res/res/drawable-mdpi/sym_keyboard_num9.png
+++ b/core/res/res/drawable-mdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_coins_s.png b/core/res/res/drawable-xhdpi/ic_coins_s.png
new file mode 100644
index 0000000..13d134e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/ic_coins_s.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_alarm.png b/core/res/res/drawable-xhdpi/ic_lockscreen_alarm.png
new file mode 100644
index 0000000..e6cceef
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/ic_lockscreen_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_sim.png b/core/res/res/drawable-xhdpi/ic_lockscreen_sim.png
new file mode 100644
index 0000000..f4de96a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/ic_lockscreen_sim.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/lockscreen_protection_pattern.png b/core/res/res/drawable-xhdpi/lockscreen_protection_pattern.png
new file mode 100644
index 0000000..c13afe2
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/lockscreen_protection_pattern.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_delete.png b/core/res/res/drawable-xhdpi/sym_keyboard_delete.png
index ca936d1..45c14aa 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_delete.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_enter.png b/core/res/res/drawable-xhdpi/sym_keyboard_enter.png
new file mode 100644
index 0000000..3b034fd
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_enter.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num0_no_plus.png b/core/res/res/drawable-xhdpi/sym_keyboard_num0_no_plus.png
index 95b542d..cdd256d 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num0_no_plus.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num0_no_plus.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num1.png b/core/res/res/drawable-xhdpi/sym_keyboard_num1.png
index decd584..d81d4b5 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num1.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num2.png b/core/res/res/drawable-xhdpi/sym_keyboard_num2.png
index 37948fb..8ae9faf 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num2.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num3.png b/core/res/res/drawable-xhdpi/sym_keyboard_num3.png
index 0e36ff2..ed6e90a 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num3.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num4.png b/core/res/res/drawable-xhdpi/sym_keyboard_num4.png
index f469a4a..5cff39f 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num4.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num5.png b/core/res/res/drawable-xhdpi/sym_keyboard_num5.png
index 941f877..1c9358e 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num5.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num6.png b/core/res/res/drawable-xhdpi/sym_keyboard_num6.png
index eceec55..9a5cb6f 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num6.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num7.png b/core/res/res/drawable-xhdpi/sym_keyboard_num7.png
index 5b5d205..1bd5c6b 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num7.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num8.png b/core/res/res/drawable-xhdpi/sym_keyboard_num8.png
index ea776eb..9a33152 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num8.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_num9.png b/core/res/res/drawable-xhdpi/sym_keyboard_num9.png
index 29047fb..caa3113 100644
--- a/core/res/res/drawable-xhdpi/sym_keyboard_num9.png
+++ b/core/res/res/drawable-xhdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/core/res/res/layout-land/keyguard_host_view.xml b/core/res/res/layout-land/keyguard_host_view.xml
index 01e1866..595762e 100644
--- a/core/res/res/layout-land/keyguard_host_view.xml
+++ b/core/res/res/layout-land/keyguard_host_view.xml
@@ -24,13 +24,15 @@
android:id="@+id/keyguard_host_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:gravity="center_vertical"
android:orientation="horizontal">
<com.android.internal.policy.impl.keyguard.KeyguardWidgetPager
android:id="@+id/app_widget_container"
android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
+ android:layout_height="230dip"
+ android:gravity="center"
+ android:layout_weight=".45"
android:visibility="gone">
<!-- TODO: Remove this once supported as a widget -->
@@ -44,7 +46,9 @@
android:id="@+id/view_flipper"
android:layout_width="0dip"
android:layout_height="match_parent"
- android:layout_weight="1"
+ android:layout_weight="0.55"
+ android:layout_marginLeft="8dip"
+ android:layout_marginRight="8dip"
android:gravity="center">
<!-- SelectorView is always used, so add it here. The rest are loaded dynamically -->
diff --git a/core/res/res/layout/app_permission_item_money.xml b/core/res/res/layout/app_permission_item_money.xml
index ab0d532..3fa4653 100644
--- a/core/res/res/layout/app_permission_item_money.xml
+++ b/core/res/res/layout/app_permission_item_money.xml
@@ -55,9 +55,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
- android:layout_below="@id/perm_name"
- android:scaleType="fitCenter" />
+ android:layout_alignBottom="@+id/perm_money_label"
+ android:scaleType="fitCenter"
+ android:src="@android:drawable/ic_coins_s" />
<TextView
+ android:id="@+id/perm_money_label"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="16sp"
android:textColor="@color/perms_costs_money"
@@ -65,6 +67,7 @@
android:layout_height="wrap_content"
android:layout_toEndOf="@id/perm_money_icon"
android:layout_below="@id/perm_name"
+ android:layout_marginStart="8dp"
android:text="@string/perm_costs_money" />
</RelativeLayout>
diff --git a/core/res/res/layout/keyguard_emergency_carrier_area.xml b/core/res/res/layout/keyguard_emergency_carrier_area.xml
new file mode 100644
index 0000000..62cbac4
--- /dev/null
+++ b/core/res/res/layout/keyguard_emergency_carrier_area.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- This contains emergency call button and carrier as shared by pin/pattern/password screens -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ android:layout_alignParentBottom="true">
+
+ <com.android.internal.policy.impl.keyguard.CarrierText
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="@dimen/kg_status_line_font_size"
+ android:layout_marginLeft="@dimen/kg_emergency_button_shift"
+ android:textColor="?android:attr/textColorSecondary"/>
+
+ <com.android.internal.policy.impl.keyguard.EmergencyButton
+ android:id="@+id/emergency_call_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
+ android:text="@string/kg_emergency_call_label"
+ style="?android:attr/buttonBarButtonStyle"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="@dimen/kg_status_line_font_size"
+ android:textColor="?android:attr/textColorSecondary"
+ android:layout_marginLeft="@dimen/kg_emergency_button_shift"
+ android:drawablePadding="8dip" />
+
+</LinearLayout>
diff --git a/core/res/res/layout/keyguard_navigation.xml b/core/res/res/layout/keyguard_navigation.xml
index a033101..d52bcb4 100644
--- a/core/res/res/layout/keyguard_navigation.xml
+++ b/core/res/res/layout/keyguard_navigation.xml
@@ -17,39 +17,19 @@
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="left">
+ android:id="@+id/keyguard_click_area"
+ android:gravity="center">
- <LinearLayout
- android:id="@+id/keyguard_click_area"
- android:layout_width="match_parent"
+ <!-- message area for security screen -->
+ <TextView
+ android:id="@+id/keyguard_message_area"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- style="?android:attr/buttonBarButtonStyle"
- android:padding="10dip"
- android:clickable="true">
-
- <ImageView
- android:src="?android:attr/homeAsUpIndicator"
- android:layout_gravity="center_vertical|start"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
-
- <!-- message area for security screen -->
- <TextView
- android:id="@+id/keyguard_message_area"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="end"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:layout_marginEnd="6dip"
- android:layout_marginStart="6dip"
- android:textAppearance="?android:attr/textAppearanceMedium"/>
-
- </LinearLayout>
+ android:layout_gravity="start"
+ android:ellipsize="marquee"
+ android:layout_marginEnd="4dip"
+ android:layout_marginStart="4dip"
+ android:textSize="22dip"
+ android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>
diff --git a/core/res/res/layout/keyguard_password_view.xml b/core/res/res/layout/keyguard_password_view.xml
index 4ea471e..e8ca98b 100644
--- a/core/res/res/layout/keyguard_password_view.xml
+++ b/core/res/res/layout/keyguard_password_view.xml
@@ -24,7 +24,16 @@
android:layout_height="match_parent"
android:gravity="center_horizontal">
- <include layout="@layout/keyguard_navigation"/>
+ <LinearLayout
+ android:layout_height="0dip"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <include layout="@layout/keyguard_navigation"/>
+
+ </LinearLayout>
<!-- Password entry field -->
<!-- Note: the entire container is styled to look like the edit field,
@@ -33,9 +42,9 @@
android:layout_gravity="center_vertical|fill_horizontal"
android:layout_width="match_parent"
android:orientation="horizontal"
- android:background="@*android:drawable/lockscreen_password_field_dark"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip">
+ android:background="#70000000"
+ android:layout_marginStart="4dip"
+ android:layout_marginEnd="4dip">
<EditText android:id="@+id/passwordEntry"
android:layout_width="0dip"
@@ -79,11 +88,6 @@
</LinearLayout>
- <Space
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"/>
-
<!-- Numeric keyboard -->
<com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard"
android:layout_width="match_parent"
@@ -97,4 +101,9 @@
android:clickable="true"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/kg_secure_padding_height"
+ android:background="@drawable/lockscreen_protection_pattern" />
+
</com.android.internal.policy.impl.keyguard.KeyguardPasswordView>
diff --git a/core/res/res/layout/keyguard_pattern_view.xml b/core/res/res/layout/keyguard_pattern_view.xml
index 356bce3..311f77f 100644
--- a/core/res/res/layout/keyguard_pattern_view.xml
+++ b/core/res/res/layout/keyguard_pattern_view.xml
@@ -28,18 +28,22 @@
android:layout_height="match_parent"
android:gravity="center_horizontal">
- <include layout="@layout/keyguard_navigation"/>
+ <LinearLayout
+ android:layout_height="0dip"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <include layout="@layout/keyguard_navigation"/>
- <Space android:layout_gravity="fill" />
+ <Button android:id="@+id/forgot_password_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="@dimen/kg_status_line_font_size"
+ android:visibility="gone"/>
- <Button android:id="@+id/forgot_password_button"
- android:layout_gravity="right"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="@*android:dimen/keyguard_lockscreen_status_line_font_size"
- android:drawableLeft="@*android:drawable/lockscreen_forgot_password_button"
- android:drawablePadding="0dip"
- android:visibility="gone"/>
+ </LinearLayout>
<!-- 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
@@ -52,7 +56,11 @@
android:layout_marginEnd="8dip"
android:layout_marginBottom="4dip"
android:layout_marginStart="8dip"
- android:layout_gravity="center_horizontal"
- />
+ android:layout_gravity="center_horizontal" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/kg_secure_padding_height"
+ android:background="@drawable/lockscreen_protection_pattern" />
</com.android.internal.policy.impl.keyguard.KeyguardPatternView>
diff --git a/core/res/res/layout/keyguard_selector_view.xml b/core/res/res/layout/keyguard_selector_view.xml
index bf2fc22..8b2865e 100644
--- a/core/res/res/layout/keyguard_selector_view.xml
+++ b/core/res/res/layout/keyguard_selector_view.xml
@@ -31,6 +31,9 @@
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="0.45"
+ android:layout_marginTop="35dip"
+ android:layout_marginLeft="33dip"
+ android:layout_marginRight="33dip"
android:visibility="gone">
<!-- TODO: Remove this when supported as a widget -->
<include layout="@layout/keyguard_status_view"/>
@@ -50,6 +53,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
+ android:gravity="@integer/kg_selector_gravity"
prvandroid:targetDrawables="@*android:array/lockscreen_targets_with_camera"
prvandroid:targetDescriptions="@*android:array/lockscreen_target_descriptions_with_camera"
@@ -64,34 +68,13 @@
prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"
prvandroid:pointDrawable="@*android:drawable/ic_lockscreen_glowdot"/>
- <LinearLayout
+ <include layout="@layout/keyguard_emergency_carrier_area"
android:id="@+id/keyguard_selector_fade_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
- android:layout_alignParentBottom="true">
-
- <com.android.internal.policy.impl.keyguard.CarrierText
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@*android:dimen/keyguard_lockscreen_status_line_font_size"
- android:textColor="?android:attr/textColorSecondary"
- />
-
- <com.android.internal.policy.impl.keyguard.EmergencyButton
- android:id="@+id/emergency_call_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
- android:text="@string/kg_emergency_call_label"
- style="?android:attr/buttonBarButtonStyle"
- android:drawablePadding="8dip" />
-
- </LinearLayout>
+ android:layout_alignParentBottom="true" />
</RelativeLayout>
diff --git a/core/res/res/layout/keyguard_sim_pin_view.xml b/core/res/res/layout/keyguard_sim_pin_view.xml
index 122484a..57c7ac6 100644
--- a/core/res/res/layout/keyguard_sim_pin_view.xml
+++ b/core/res/res/layout/keyguard_sim_pin_view.xml
@@ -25,12 +25,21 @@
android:layout_height="match_parent"
android:gravity="center_horizontal">
- <include layout="@layout/keyguard_navigation"/>
-
- <Space
- android:layout_width="match_parent"
+ <LinearLayout
android:layout_height="0dip"
- android:layout_weight="1"/>
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/ic_lockscreen_sim"/>
+
+ <include layout="@layout/keyguard_navigation"/>
+
+ </LinearLayout>
<!-- Password entry field -->
<!-- Note: the entire container is styled to look like the edit field,
@@ -39,8 +48,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:layout_marginEnd="6dip"
- android:layout_marginStart="6dip"
+ android:layout_marginEnd="4dip"
+ android:layout_marginStart="4dip"
android:gravity="center_vertical"
android:background="@android:drawable/edit_text">
@@ -74,9 +83,14 @@
android:layout_marginEnd="4dip"
android:paddingTop="4dip"
android:paddingBottom="4dip"
- android:background="#80ffffff"
+ android:background="#40000000"
android:keyBackground="@*android:drawable/btn_keyboard_key_ics"
android:clickable="true"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/kg_secure_padding_height"
+ android:background="@drawable/lockscreen_protection_pattern" />
+
</com.android.internal.policy.impl.keyguard.KeyguardSimPinView>
diff --git a/core/res/res/layout/keyguard_status_view.xml b/core/res/res/layout/keyguard_status_view.xml
index 170dd99..d8adc93 100644
--- a/core/res/res/layout/keyguard_status_view.xml
+++ b/core/res/res/layout/keyguard_status_view.xml
@@ -35,6 +35,7 @@
android:id="@+id/clock_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginTop="-15.5dip"
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
android:layout_gravity="end">
@@ -46,6 +47,7 @@
android:textSize="@dimen/kg_status_clock_font_size"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff"
+ android:drawablePadding="2dip"
/>
</com.android.internal.policy.impl.keyguard.ClockView>
@@ -64,19 +66,21 @@
/>
<TextView
- android:id="@+id/owner_info"
+ android:id="@+id/alarm_status"
android:layout_gravity="end"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="28dp"
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/kg_status_line_font_size"
+ android:drawablePadding="4dip"
/>
<TextView
- android:id="@+id/alarm_status"
+ android:id="@+id/owner_info"
android:layout_gravity="end"
+ android:layout_marginTop="4dp"
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
android:singleLine="true"
android:ellipsize="marquee"
@@ -87,6 +91,7 @@
<TextView
android:id="@+id/status1"
android:layout_gravity="end"
+ android:layout_marginTop="4dp"
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
android:singleLine="true"
android:ellipsize="marquee"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 0bedb03..678f6b3 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Laat die program toe om die interne status van die stelsel op te haal. Kwaadwillige programme kan \'n verskeidenheid privaat en beveiligde inligting ophaal wat hulle gewoonlik nooit nodig het nie."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"haal skerminhoud op"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Laat die program toe om die inhoud van die aktiewe venster op te haal. Kwaadwillige programme kan die hele venster se inhoud ophaal, en al die teks ondersoek, behalwe wagwoorde."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"haal vensterinligting op"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Laat \'n program toe om inligting oor vensters vanaf die vensterbestuurder op te haal. Kwaadwillige programme kan moontlik inligting ophaal wat vir interne stelselgebruik bedoel is."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filter gebeure"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Oop Wi-Fi-netwerke beskikbaar"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Meld aan by Wi-Fi-netwerk"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Meld aan by netwerk"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kon nie aan Wi-Fikoppel nie"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Aan:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Voer die vereiste PIN in:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Die telefoon sal tydelik van Wi-Fi ontkoppel terwyl dit aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gekoppel is"</string>
<string name="select_character" msgid="3365550120617701745">"Voeg karakter in"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Stuur SMS-boodskappe"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; stuur \'n groot aantal SMS-boodskappe. Wil jy hierdie program toelaat om voort te gaan om boodskappe te stuur?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik geteken. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal jy gevra word om jou tablet te ontsluit deur middel van \'n e-posrekening."\n\n" Probeer weer oor <xliff:g id="NUMBER_2">%d</xliff:g> sekondes."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik geteken. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal jy gevra word om jou foon te ontsluit deur middel van \'n e-posrekening."\n\n" Probeer weer oor <xliff:g id="NUMBER_2">%d</xliff:g> sekondes."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Verhoog volume bo veilige vlak?"\n"Deur vir lang tydperke na hoë volume te luister, kan jou gehoor beskadig word."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index be904f5..8ed4adb 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"የስርዓቱን ውስጣዊ ሁናቴ ለመበርበር ለመተግበሪያው ይፈቅዳሉ፡፡ በተለምዶ የማያስፈልጋቸውን ብዙ አይነት የግል እና የደህንነት መረጃዎችን ተንኮል አዘል መተግበሪያዎች ሊበረብሩ ይችላሉ፡፡"</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"የማያ ይዘት ሰርስረህ አውጣ"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"የነቃ መስኮት ይዘትን ለመበርበር ለመተግበሪያው ይፈቅዳሉ፡፡ ጠቅላላውን የመስኮት ይዘት ለመበርበር እና ከይለፍ ቃል በስተቀር ሁሉንም ጽሑፉን ለማየት ጎጂ መተግበሪያዎች ይችላሉ፡፡"</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"የመስኮት መረጃን አምጣ"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"አንድ መተግበሪያ ከመስኮት አቀናባሪው ሆኖ ስለመስኮቱ መረጃ እንዲያመጣ ያስችለዋል። ተንኮል-አዘል መተግበሪያዎች ለውስጣዊ ስርዓት ጥቅም የታሰበ መረጃን ሊወስዱ ይችላሉ።"</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"ክስተቶችን አጣራ"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልሳሉትም። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ የኢሜይል መለያ ተጠቅመው ጡባዊ ቱኮዎን እንዲከፍቱ ይጠየቃሉ።"\n\n" ከ<xliff:g id="NUMBER_2">%d</xliff:g> ከሰከንዶች በኋላ እንደገና ይሞክሩ።"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልሳሉትም። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ የኢሜይል መለያ ተጠቅመው ስልክዎን እንዲከፍቱ ይጠየቃሉ።"\n\n"እባክዎ ከ<xliff:g id="NUMBER_2">%d</xliff:g> ሰከንዶች በኋላ እንደገና ይሞክሩ።"</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"ድምጽ አደጋ ከሌለው መጠን በላይ ይጨመር??"\n"ለረጅም ጊዜ በከፍተኛ ድምጽ መስማት የመስማት ችሎታዎን ሊጎዳይ ይችላል።"</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 7cf8787..14ed551 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"للسماح للتطبيق باسترداد الحالة الداخلية للنظام. قد تسترد التطبيقات الضارة مجموعة كبيرة من المعلومات الخاصة والآمنة التي لا حاجة لها في العادة على الإطلاق."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"استرداد محتوى الشاشة"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"للسماح للتطبيق باسترداد محتوى النافذة النشطة. يمكن للبرامج الضارة استرداد محتوى النافذة بالكامل وفحص جميع النصوص الموجودة بها باستثناء كلمات المرور."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"استرداد معلومات النوافذ"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"للسماح لأحد التطبيقات باستعادة معلومات حول النوافذ من مدير النوافذ. يمكن أن تستعيد التطبيقات الضارة معلومات الغرض منها استخدام النظام الداخلي."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"تصفية الأحداث"</string>
@@ -320,7 +324,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"عرض النوافذ غير المصرح بها"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"للسماح للتطبيق بإنشاء نوافذ بقصد استخدامها بواسطة واجهة مستخدم النظام الداخلي. ليس للاستخدام بواسطة التطبيقات العادية."</string>
<string name="permlab_systemAlertWindow" msgid="3543347980839518613">"التغطية على تطبيقات أخرى"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"للسماح للتطبيق بالرسم على التطبيقات الأخرى أو أجزاء من واجهة المستخدم. وقد تتداخل مع استخدامك للواجهة في أي تطبيق أو قد تغير ما تعتقد أنك تراه في التطبيقات الأخرى."</string>
+ <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"للسماح بوضع التطبيق بالقرب أعلى التطبيقات الأخرى أو في أجزاء من واجهة المستخدم. وقد يتداخل مع استخدامك للواجهة في أي تطبيق أو قد يغير ما تعتقد أنك تراه في التطبيقات الأخرى."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"تعديل سرعة الرسوم المتحركة العمومية"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"للسماح للتطبيق بتغيير سرعة الرسوم المتحركة العمومية (رسوم متحركة أسرع أو أبطأ) في أي وقت."</string>
<string name="permlab_manageAppTokens" msgid="1286505717050121370">"إدارة الرموز المميزة للتطبيقات"</string>
@@ -431,9 +435,9 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"إذن لتثبيت موفر خدمة موقع"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"لإنشاء مصادر مواقع زائفة للاختبار أو تثبيت موفر مواقع جديد. يتيح هذا للتطبيق إلغاء الموقع و/أو الحالة التي تعرضها مصادر المواقع الأخرى مثل GPS أو موفري المواقع."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"الموقع الدقيق (مستند إلى نظام تحديد المواقع العالمي والشبكة)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"للسماح للتطبيق بتحديد موقعك بدقة وهذا باستخدام نظام تحديد المواقع العالمي (GPS) أو مصادر المواقع التي تستخدم الشبكات مثل الأبراج الخلوية أو تقنية Wi-Fi. يتعين توفر خدمات المواقع هذه وتشغيلها على جهازك للتطبيق كي يستخدمها. وقد تستخدم التطبيقات هذا لتحديد موقعك وقد تستهلك مزيدًا من طاقة البطارية."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"للسماح للتطبيق بتحديد موقعك بدقة وهذا باستخدام نظام تحديد المواقع العالمي (GPS) أو مصادر المواقع التي تستخدم الشبكات مثل أبراج الجوال أو تقنية Wi-Fi. يتعين توفر خدمات المواقع هذه وتشغيلها على جهازك للتطبيق كي يستخدمها. وقد تستخدم التطبيقات هذا لتحديد موقعك وقد تستهلك مزيدًا من طاقة البطارية."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"الموقع التقريبي (مستند إلى الشبكة)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"للسماح للتطبيق بتحديد موقعك التقريبي الذي يستمد من خدمات الموقع باستخدام مصادر المواقع التي تستخدم الشبكات مثل الأبراج الخلوية وتقنية Wi-Fi. يتعين توفر خدمات المواقع هذه وتشغيلها على جهازك للتطبيق كي يستخدمها. وقد تستخدم التطبيقات هذا لتحديد موقعك التقريبي."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"للسماح للتطبيق بتحديد موقعك التقريبي الذي يستمد من خدمات الموقع باستخدام مصادر المواقع التي تستخدم الشبكات مثل أبراج الجوال وتقنية Wi-Fi. يتعين توفر خدمات المواقع هذه وتشغيلها على جهازك للتطبيق كي يستخدمها. وقد تستخدم التطبيقات هذا لتحديد موقعك التقريبي."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"الدخول إلى SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"للسماح للتطبيق باستخدام ميزات SurfaceFlinger ذات المستوى المنخفض."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"قراءة المخزن المؤقت للإطارات"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"لقد رسمت نقش إلغاء التأمين بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستطالَب بإلغاء تأمين الجهاز اللوحي باستخدام معلومات حساب بريد إلكتروني."\n\n" أعد المحاولة خلال <xliff:g id="NUMBER_2">%d</xliff:g> ثانية."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"لقد رسمت نقش إلغاء التأمين بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الهاتف باستخدام حساب بريد إلكتروني لإلغاء تأمين الهاتف."\n\n" أعد المحاولة خلال <xliff:g id="NUMBER_2">%d</xliff:g> ثانية."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"هل تريد رفع مستوى الصوت فوق المستوى الآمن؟"\n"قد يضر سماع صوت عالٍ لفترات طويلة بسمعك."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 9c9f8b8..5a95d6c 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Дазваляе прыкладанням атрымліваць інфармацыю аб унутраным стане сістэмы. Шкоднасныя прыкладанні могуць атрымліваць шырокі спектр прыватных дадзеных і дадзеных, прызначаных для забеспячэння бяспекі інфармацыі, якія звычайна ім не патрэбны."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"атрыманне зместу экрана"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Дазваляе прыкладанням атрымліваць змесціва актыўнага акна. Шкоднасныя прыкладанні могуць атрымліваць усё змесціва акна і разглядаць увесь яго тэкст, акрамя пароляў."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"атрымаць звесткi пра акно"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Дазваляе прыкладанням вымаць iнфармацыю пра вокны з iнструмента кiравання вокнамi. Шкоднасныя прыкладаннi могуць вымаць iнфармацыю, якая прызначана для ўнутранага выкарыстання ў сiстэме."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"фільтр падзей"</string>
@@ -1407,5 +1411,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. Пасля яшчэ некалькiх няўдалых спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) вам будзе прапанавана разблакiраваць тэлефон, увайшоўшы ў Google."\n\n" Паўтарыце спробу праз <xliff:g id="NUMBER_2">%d</xliff:g> с."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. Пасля яшчэ некалькiх няўдалых спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) вам будзе прапанавана разблакiраваць тэлефон, увайшоўшы ў Google."\n\n" Паўтарыце спробу праз <xliff:g id="NUMBER_2">%d</xliff:g> с."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Павялiчыць гук больш за рэкамендаваны ўзровень?"\n"Доўгае слуханне музыкi на вялiкай гучнасцi можа пашкодзiць ваш слых."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 06de90b..8c992c1 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Разрешава на приложението да извлича вътрешното състояние на системата. Злонамерените приложения могат да извлекат разнообразна частна и защитена информация, която нормално не би трябвало да им е нужна."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"извличане на съдържанието на екрана"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Разрешава на приложението да извлича съдържанието от активния прозорец. Злонамерените приложения могат да извлекат цялото му съдържание и да проследят целия текст в него освен паролите."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"извличане на информация за прозорците"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Разрешава на приложението да извлича информация за прозорците от съответния мениджър. Злонамерените приложения може да извличат данни, които са предназначени за вътрешно използване от системата."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"филтриране на събитията"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Има достъпни отворени Wi-Fi мрежи"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Влизане в Wi-Fi мрежа"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Влезте в мрежата"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не можа да се свърже с Wi-Fi"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"До:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Въведете задължителния ПИН:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"ПИН:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Телефонът временно ще прекрати връзката с Wi-Fi, докато е свързан с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Вмъкване на знак"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Изпращане на SMS съобщения"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; изпраща голям брой SMS съобщения. Искате ли да разрешите на това приложение да продължи да го прави?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдете помолени да отключите таблета посредством имейл адрес."\n\n" Опитайте отново след <xliff:g id="NUMBER_2">%d</xliff:g> секунди."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдете помолени да отключите телефона посредством имейл адрес."\n\n" Опитайте отново след <xliff:g id="NUMBER_2">%d</xliff:g> секунди."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Да се увеличи ли силата на звука над безопасното ниво?"\n"Продължителното слушане при висока сила на звука може да увреди слуха ви."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 0bfca00..d0e1e3c 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permet que l\'aplicació recuperi l\'estat intern del sistema. Les aplicacions malicioses poden recuperar una àmplia gamma d\'informació privada i de seguretat que normalment no haurien de necessitar mai."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"recuperació del contingut de la pantalla"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permet que l\'aplicació recuperi el contingut de la finestra activa. Les aplicacions malicioses poden recuperar el contingut de tota la finestra i examinar-ne tot el text, excepte les contrasenyes."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"recupera informació de les finestres"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permet que una aplicació recuperi informació sobre les finestres del gestor de finestres. Aplicacions malicioses podrien recuperar informació dirigida a la utilització per part del sistema intern."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtra els esdeveniments"</string>
@@ -1150,7 +1154,7 @@
<string name="extmedia_format_button_format" msgid="4131064560127478695">"Formata"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuració d\'USB connectada"</string>
<string name="adb_active_notification_message" msgid="1016654627626476142">"Toca-ho per desactivar la depuració USB."</string>
- <string name="select_input_method" msgid="4653387336791222978">"Selecció de mètodes d\'introducció"</string>
+ <string name="select_input_method" msgid="4653387336791222978">"Selecciona un mètodes d\'entrada"</string>
<string name="configure_input_methods" msgid="9091652157722495116">"Configura els mètodes d\'entrada"</string>
<string name="use_physical_keyboard" msgid="6203112478095117625">"Teclat físic"</string>
<string name="hardware" msgid="7517821086888990278">"Maquinari"</string>
@@ -1405,6 +1409,13 @@
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Has provat de desbloquejar el telèfon <xliff:g id="NUMBER">%d</xliff:g> vegades de manera incorrecta. Ara el telèfon es restablirà a la configuració predeterminada de fàbrica."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Has dibuixat el patró de desbloqueig <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. Després de <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, se\'t demanarà que desbloquegis la tauleta amb un compte de correu electrònic."\n\n" Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_2">%d</xliff:g> segons."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Has dibuixat el patró de desbloqueig <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. Després de <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, se\'t demanarà que desbloquegis el telèfon amb un compte de correu electrònic."\n\n" Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_2">%d</xliff:g> segons."</string>
- <string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Vols augmentar el volum per sobre del nivell de seguretat?"\n"Escoltar música a un volum alt durant períodes llargs pot danyar l\'oïda."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Vols augmentar el volum per sobre del nivell de seguretat?"\n"Escoltar música a un volum alt durant períodes llargs pot perjudicar l\'oïda."</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 2ad8153..7711e11 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Umožňuje aplikaci získat informace o vnitřním stavu systému. Škodlivé aplikace mohou získat různé soukromé informace nebo informace o zabezpečení, které by běžně vůbec neměly potřebovat."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"načtení obsahu obrazovky"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Umožňuje aplikaci načíst obsah aktivního okna. Škodlivé aplikace mohou načíst obsah celého okna a prozkoumat všechen text kromě hesel."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"načítání informací o oknech"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Umožňuje aplikaci načíst informace o oknech ze správce oken. Škodlivé aplikace mnohou načíst informace, které slouží k internímu systémovému využití."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrování událostí"</string>
@@ -372,7 +376,7 @@
<string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Umožňuje aplikaci uvolnit úložiště v telefonu tím, že smaže soubory ve složkách mezipaměti jiných aplikací. To může způsobit, že se jiné aplikace budou spouštět pomaleji, protože budou potřebovat znovu načíst data."</string>
<string name="permlab_movePackage" msgid="3289890271645921411">"přesun zdrojů aplikace"</string>
<string name="permdesc_movePackage" msgid="319562217778244524">"Umožňuje aplikaci přesunout zdroje aplikace z interního média do externího a naopak."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"číst citlivá data v protokolech"</string>
+ <string name="permlab_readLogs" msgid="6615778543198967614">"čtení citlivých dat v protokolech"</string>
<string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"Umožňuje aplikaci číst různé systémové soubory protokolů. Toto oprávnění aplikaci umožní získat obecné informace o činnostech s tabletem, které by mohly obsahovat osobní či soukromé informace."</string>
<string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Umožňuje aplikaci číst různé systémové soubory protokolů. Toto oprávnění aplikaci umožní získat obecné informace o činnostech s telefonem, které by mohly obsahovat osobní či soukromé informace."</string>
<string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"použít jakýkoliv dekodér pro přehrávání médií"</string>
@@ -418,10 +422,10 @@
<string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Umožňuje aplikaci získat přístup k sociálním aktualizacím od vašich přátel a synchronizaci těchto aktualizací. Při sdílení informací buďte opatrní – toto oprávnění umožňuje aplikaci číst komunikaci mezi vámi a vašimi přáteli v sociálních sítích bez ohledu na její důvěrnost. Poznámka: Toto oprávnění nemusí platit pro všechny sociální sítě."</string>
<string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"zapisovat do vašeho sociálního streamu"</string>
<string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Umožňuje aplikaci zobrazit sociální aktualizace od vašich přátel. Při sdílení informací buďte opatrní – aplikace s tímto oprávněním může vytvářet zprávy, které zdánlivě pochází od vašich přátel. Poznámka: Toto oprávnění nemusí platit pro všechny sociální sítě."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"číst události kalendáře a důvěrné informace"</string>
+ <string name="permlab_readCalendar" msgid="5972727560257612398">"čtení událostí kalendáře a důvěrné informace"</string>
<string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Umožňuje aplikaci číst všechny události kalendáře uložené v tabletu, včetně událostí přátel nebo spolupracovníků. Aplikace s tímto oprávněním může sdílet nebo ukládat údaje v kalendáři bez ohledu na důvěrnost nebo citlivost těchto údajů."</string>
<string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Umožňuje aplikaci číst všechny události kalendáře uložené v telefonu, včetně událostí přátel nebo spolupracovníků. Aplikace s tímto oprávněním může sdílet nebo ukládat údaje v kalendáři bez ohledu na důvěrnost nebo citlivost těchto údajů."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"přidávat a upravovat události kalendáře a odesílat e-maily bez vědomí vlastníka"</string>
+ <string name="permlab_writeCalendar" msgid="8438874755193825647">"přidávání a upravování událostí kalendářů a odesílání e-mailů bez vědomí vlastníka"</string>
<string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Umožňuje aplikaci přidat, odebrat nebo změnit události, které můžete v tabletu upravovat, a to včetně událostí přátel a spolupracovníků. Toto oprávnění umožňuje aplikaci odesílat zprávy, které budou zdánlivě přicházet od vlastníka kalendáře, nebo upravovat události bez vědomí vlastníka."</string>
<string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Umožňuje aplikaci přidat, odebrat nebo změnit události, které můžete v telefonu upravovat, a to včetně událostí přátel a spolupracovníků. Toto oprávnění umožňuje aplikaci odesílat zprávy, které budou zdánlivě přicházet od vlastníků kalendářů, nebo upravovat události bez vědomí vlastníků."</string>
<string name="permlab_accessMockLocation" msgid="8688334974036823330">"simulace zdrojů polohy pro účely testování"</string>
@@ -563,7 +567,7 @@
<string name="permlab_bluetooth" msgid="6127769336339276828">"párování se zařízeními Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Umožňuje aplikaci zobrazit konfiguraci tabletu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string>
<string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Umožňuje aplikaci zobrazit konfiguraci telefonu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ovládat technologii NFC"</string>
+ <string name="permlab_nfc" msgid="4423351274757876953">"ovládání technologie NFC"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Umožňuje aplikaci komunikovat se štítky, kartami a čtečkami s podporou technologie NFC."</string>
<string name="permlab_disableKeyguard" msgid="3598496301486439258">"vypnutí zámku obrazovky"</string>
<string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Umožňuje aplikaci vypnout zámek kláves a související zabezpečení heslem. Telefon například vypne zámek klávesnice při příchozím hovoru a po skončení hovoru jej zase zapne."</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Jsou k dispozici veřejné sítě WiFi"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Přihlásit se k síti Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Přihlášení k síti"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Připojení k síti Wi-Fi se nezdařilo"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Komu:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Zadejte požadovaný kód PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefon se při připojení k zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g> dočasně odpojí od sítě Wi-Fi"</string>
<string name="select_character" msgid="3365550120617701745">"Vkládání znaků"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Odesílání zpráv SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Aplikace &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;odesílá velký počet SMS zpráv. Chcete aplikaci povolit, aby zprávy odesílala i nadále?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně nakreslili své heslo odemknutí. Po <xliff:g id="NUMBER_1">%d</xliff:g>dalších neúspěšných pokusech budete požádáni o odemčení tabletu pomocí e-mailového účtu."\n\n" Zkuste to znovu za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně nakreslili své heslo odemknutí. Po <xliff:g id="NUMBER_1">%d</xliff:g> dalších neúspěšných pokusech budete požádáni o odemčení telefonu pomocí e-mailového účtu."\n\n" Zkuste to znovu za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Chcete hlasitost zvýšit nad bezpečnou úroveň?"\n"Dlouhodobý poslech hlasitého zvuku může poškodit sluch."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index b5f7494..21a7bf4 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Tillader, at appen kan hente systemets interne tilstand. Ondsindede apps kan hente en lang række fortrolige og beskyttede oplysninger, som de normalt aldrig ville have brug for."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"hente skærmindhold"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Tillader, at appen kan hente indholdet i det aktive vindue. Ondsindede apps kan hente al indholdet i vinduet og undersøge al dens tekst med undtagelse af adgangskoder."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"hent oplysninger om vinduer"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Tillader, at en applikation henter oplysninger om vinduerne i vinduesadministratoren. Skadelige apps kan muligvis hente oplysninger, der er beregnet til intern systembrug."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrer begivenheder"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg vil du blive bedt om at låse din tablet op ved hjælp af en e-mailkonto"\n\n" Prøv igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg til vil du blive bedt om at låse din telefon op ved hjælp af en e-mailkonto."\n\n" Prøv igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Skal lydstyrken være over det sikre niveau?"\n"Du kan skade din hørelse ved at lytte ved høj lydstyrke i længere tid."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 297536d..077d39c 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Ermöglicht der App, den internen Systemstatus abzurufen. Schädliche Apps können so eine Vielzahl an privaten und geschützten Daten abrufen, die sie in der Regel nicht benötigen."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"Bildschirminhalt abrufen"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Ermöglicht der App, den Inhalt des aktiven Fensters abzurufen. Schädliche Apps können so den gesamten Fensterinhalt abrufen und mit Ausnahme von Passwörtern den gesamten Text auswerten."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"Fensterinformationen abrufen"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Ermöglicht einer App, Informationen über die Fenster vom Fenster-Manager abzurufen. Schädliche Apps können Informationen abrufen, die für die systeminterne Nutzung gedacht sind."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"Ereignisse filtern"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Sie haben Ihr Entsperrungsmuster <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch gezeichnet. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen werden Sie aufgefordert, Ihr Tablet mithilfe eines E-Mail-Kontos zu entsperren."\n\n" Versuchen Sie es in <xliff:g id="NUMBER_2">%d</xliff:g> Sekunden erneut."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Sie haben Ihr Entsperrungsmuster <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch gezeichnet. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen werden Sie aufgefordert, Ihr Telefon mithilfe eines E-Mail-Kontos zu entsperren."\n\n" Versuchen Sie es in <xliff:g id="NUMBER_2">%d</xliff:g> Sekunden erneut."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Lautstärke höher als Schwellenwert stellen?"\n"Wenn Sie über längere Zeiträume hinweg Musik in hoher Lautstärke hören, kann dies Ihr Gehör schädigen."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 2607199..ded1b1c 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Επιτρέπει στην εφαρμογή την ανάκτηση της εσωτερικής κατάστασης του συστήματος. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακτήσουν μεγάλη ποικιλία ιδιωτικών πληροφοριών και πληροφοριών ασφάλειας οι οποίες δεν θα έπρεπε να τους είναι απαραίτητες υπό φυσιολογικές συνθήκες."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ανάκτηση περιεχομένου οθόνης"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Επιτρέπει στην εφαρμογή την ανάκτηση του περιεχομένου του ενεργού παραθύρου. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακτήσουν ολόκληρο το περιεχόμενο του παραθύρου και να εξετάσουν ολόκληρο το κείμενό του εκτός από τους κωδικούς πρόσβασης."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ανάκτηση πληροφοριών παραθύρων"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Επιτρέπει σε μια εφαρμογή να ανακτήσει πληροφορίες σχετικά με τα παράθυρα από το διαχειριστή παραθύρων. Οι κακόβουλες εφαρμογές ενδέχεται να ανακτήσουν πληροφορίες που προορίζονται για την εσωτερική χρήση του συστήματος."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"φιλτράρισμα συμβάντων"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Σχεδιάσατε το μοτίβο ξεκλειδώματος εσφαλμένα <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> ανεπιτυχείς προσπάθειες ακόμη, θα σας ζητηθεί να ξεκλειδώσετε το tablet σας με τη χρήση ενός λογαριασμού ηλεκτρονικού ταχυδρομείου."\n\n" Δοκιμάστε να συνδεθείτε ξανά σε <xliff:g id="NUMBER_2">%d</xliff:g> δευτερόλεπτα."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Σχεδιάσατε το μοτίβο ξεκλειδώματος εσφαλμένα <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> ανεπιτυχείς προσπάθειες ακόμη, θα σας ζητηθεί να ξεκλειδώσετε το τηλέφωνό σας με τη χρήση ενός λογαριασμού ηλεκτρονικού ταχυδρομείου."\n\n" Δοκιμάστε ξανά σε <xliff:g id="NUMBER_2">%d</xliff:g> δευτερόλεπτα."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Αύξηση έντασης ήχου πάνω από το επίπεδο ασφαλείας;"\n"Αν ακούτε μουσική σε υψηλή ένταση για μεγάλο χρονικό διάστημα ενδέχεται να προκληθεί βλάβη στην ακοή σας."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 6269ef3..d8e924e 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Allows the app to retrieve the internal state of the system. Malicious apps may retrieve a wide variety of private and secure information that they should never normally need."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"retrieve screen content"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Allows the app to retrieve the content of the active window. Malicious apps may retrieve the entire window content and examine all its text except passwords."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"retrieve window info"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Allows an application to retrieve information about the windows from the window manager. Malicious apps may retrieve information that is intended for internal system usage."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filter events"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your tablet using an email account."\n\n" Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account."\n\n" Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Raise volume above safe level?"\n"Listening at high volume for long periods may damage your hearing."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index cff81ea..8e3827d 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -199,7 +199,7 @@
<string name="permgrouplab_microphone" msgid="171539900250043464">"Micrófono"</string>
<string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acceso directo a micrófono para grabar audio"</string>
<string name="permgrouplab_camera" msgid="4820372495894586615">"Cámara"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acceso directo a cámara para imagen o captura de vídeo"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acceso directo a cámara para imagen o captura de video"</string>
<string name="permgrouplab_appInfo" msgid="8028789762634147725">"Información de tus aplicaciones"</string>
<string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacidad para influir en el comportamiento de otras aplicaciones en el dispositivo"</string>
<string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fondo de pantalla"</string>
@@ -276,7 +276,7 @@
<string name="permlab_changeConfiguration" msgid="4162092185124234480">"cambiar la configuración de visualización del sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que la aplicación cambie la configuración actual como, por ejemplo, la configuración regional o el tamaño de fuente general."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activar el modo de auto"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo coche."</string>
+ <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo automóvil."</string>
<string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"cerrar otras aplicaciones"</string>
<string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Este permiso autoriza a la aplicación a interrumpir procesos en segundo plano de otras aplicaciones y puede hacer, por lo tanto, que esas aplicaciones dejen de ejecutarse."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forzar la detención de otras aplicaciones"</string>
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permite que la aplicación recupere el estado interno del sistema. Las aplicaciones maliciosas pueden recuperar una amplia variedad de información privada y segura que normalmente no necesitarían."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"recuperar contenido de la pantalla"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permite que la aplicación recupere el contenido de la ventana activa. Las aplicaciones maliciosas pueden recuperar el contenido completo de la ventana y examinar todo el texto, excepto las contraseñas."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"recuperar información de ventanas"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permite que una aplicación recupere la información del administrador de ventanas relacionada con estas. Las aplicaciones maliciosas pueden recuperar información destinada al uso interno del sistema."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrar eventos"</string>
@@ -623,8 +627,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Exige que se encripten los datos de la aplicación almacenados."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Desactivar cámaras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Evita el uso de todas las cámaras del dispositivo."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Desact. fun. con bloq. teclas."</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Evita el uso de algunas funciones con el bloqueo de teclas."</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Desactiv. funciones en bloqueo"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Evita el uso de algunas funciones con el bloqueo del teclado."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Casa"</item>
<item msgid="869923650527136615">"Móvil"</item>
@@ -885,19 +889,19 @@
<string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"¿Activar exploración táctil?"</string>
<string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> desea activar la exploración táctil. Cuando esta función esté activada, podrás escuchar o ver descripciones del contenido seleccionado o usar gestos para interactuar con la tableta."</string>
<string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> desea activar la exploración táctil. Cuando esta función esté activada, podrás escuchar o ver descripciones del contenido seleccionado o usar gestos para interactuar con el dispositivo."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"hace 1 mes"</string>
+ <string name="oneMonthDurationPast" msgid="7396384508953779925">"Hace 1 mes."</string>
<string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Anterior a 1 mes atrás"</string>
<plurals name="num_seconds_ago">
<item quantity="one" msgid="4869870056547896011">"hace 1 segundo"</item>
<item quantity="other" msgid="3903706804349556379">"hace <xliff:g id="COUNT">%d</xliff:g> segundos"</item>
</plurals>
<plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"hace 1 minuto"</item>
+ <item quantity="one" msgid="3306787433088810191">"Hace 1 minuto."</item>
<item quantity="other" msgid="2176942008915455116">"hace <xliff:g id="COUNT">%d</xliff:g> minutos"</item>
</plurals>
<plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"hace 1 hora"</item>
- <item quantity="other" msgid="2467273239587587569">"hace <xliff:g id="COUNT">%d</xliff:g> horas"</item>
+ <item quantity="one" msgid="9150797944610821849">"Hace 1 hora."</item>
+ <item quantity="other" msgid="2467273239587587569">"Hace <xliff:g id="COUNT">%d</xliff:g> horas."</item>
</plurals>
<plurals name="last_num_days">
<item quantity="other" msgid="3069992808164318268">"Últimos <xliff:g id="COUNT">%d</xliff:g> días"</item>
@@ -906,7 +910,7 @@
<string name="older" msgid="5211975022815554840">"Antiguos"</string>
<plurals name="num_days_ago">
<item quantity="one" msgid="861358534398115820">"ayer"</item>
- <item quantity="other" msgid="2479586466153314633">"hace <xliff:g id="COUNT">%d</xliff:g> días"</item>
+ <item quantity="other" msgid="2479586466153314633">"Hace <xliff:g id="COUNT">%d</xliff:g> días."</item>
</plurals>
<plurals name="in_num_seconds">
<item quantity="one" msgid="2729745560954905102">"en 1 segundo"</item>
@@ -930,15 +934,15 @@
</plurals>
<plurals name="abbrev_num_minutes_ago">
<item quantity="one" msgid="6361490147113871545">"hace 1 min"</item>
- <item quantity="other" msgid="851164968597150710">"hace <xliff:g id="COUNT">%d</xliff:g> minutos"</item>
+ <item quantity="other" msgid="851164968597150710">"Hace <xliff:g id="COUNT">%d</xliff:g> minutos."</item>
</plurals>
<plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"hace 1 hora"</item>
+ <item quantity="one" msgid="4796212039724722116">"Hace 1 hora."</item>
<item quantity="other" msgid="6889970745748538901">"hace <xliff:g id="COUNT">%d</xliff:g> horas"</item>
</plurals>
<plurals name="abbrev_num_days_ago">
<item quantity="one" msgid="8463161711492680309">"ayer"</item>
- <item quantity="other" msgid="3453342639616481191">"hace <xliff:g id="COUNT">%d</xliff:g> días"</item>
+ <item quantity="other" msgid="3453342639616481191">"Hace <xliff:g id="COUNT">%d</xliff:g> días."</item>
</plurals>
<plurals name="abbrev_in_num_seconds">
<item quantity="one" msgid="5842225370795066299">"en 1 segundo"</item>
@@ -1195,7 +1199,7 @@
<string name="ime_action_search" msgid="658110271822807811">"Buscar"</string>
<string name="ime_action_send" msgid="2316166556349314424">"Enviar"</string>
<string name="ime_action_next" msgid="3138843904009813834">"Siguiente"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"Hecho"</string>
+ <string name="ime_action_done" msgid="8971516117910934605">"Listo"</string>
<string name="ime_action_previous" msgid="1443550039250105948">"Ant."</string>
<string name="ime_action_default" msgid="2840921885558045721">"Ejecutar"</string>
<string name="dial_number_using" msgid="5789176425167573586">"Marcar el número"\n"con <xliff:g id="NUMBER">%s</xliff:g>"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu tableta mediante el uso de una cuenta de correo."\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu dispositivo mediante el uso de una cuenta de correo."\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"¿Aumentar el volumen sobre el nivel seguro?"\n"Si escuchas con el volumen alto durante períodos prolongados, puedes dañar tu audición."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index adb40a8..7b47b51 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -155,7 +155,7 @@
<string name="global_action_lock" msgid="2844945191792119712">"Bloqueo de pantalla"</string>
<string name="global_action_power_off" msgid="4471879440839879722">"Apagar"</string>
<string name="global_action_bug_report" msgid="7934010578922304799">"Informe de error"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Hacer informe de errores"</string>
+ <string name="bugreport_title" msgid="2667494803742548533">"Crear informe de errores"</string>
<string name="bugreport_message" msgid="398447048750350456">"Se recopilará información sobre el estado actual de tu dispositivo, que se enviará por correo electrónico. Pasarán unos minutos desde que se inicie el informe de errores hasta que se envíe, por lo que te recomendamos que tengas paciencia."</string>
<string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Modo silencio"</string>
<string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"El sonido está desactivado. Activar"</string>
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permite que la aplicación recupere el estado interno del sistema. Las aplicaciones malintencionadas pueden usar este permiso para recuperar una gran variedad de información protegida y privada que normalmente no deberían necesitar."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"recuperar contenido de la pantalla"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permite que la aplicación recupere el contenido de la ventana activa. Las aplicaciones malintencionadas pueden recuperar todo el contenido de la ventana y analizar todo el texto de la misma, excepto las contraseñas."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"recuperar información de ventanas"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permite que una aplicación recupere información sobre las ventanas del administrador de ventanas. Las aplicaciones malintencionadas pueden recuperar información destinada al uso interno del sistema."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrar eventos"</string>
@@ -797,7 +801,7 @@
<string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Para desbloquear el teléfono, inicia sesión con tu cuenta de Google."</string>
<string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"Nombre de usuario (correo electrónico)"</string>
<string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Contraseña"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Acceder"</string>
+ <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Iniciar sesión"</string>
<string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Nombre de usuario o contraseña no válido"</string>
<string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"Si has olvidado tu nombre de usuario o tu contraseña,"\n"accede a la página "<b>"google.com/accounts/recovery"</b>"."</string>
<string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"Comprobando..."</string>
@@ -1227,7 +1231,7 @@
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Se ha habilitado el modo coche."</string>
<string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca para salir del modo coche."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Anclaje a red/Zona Wi-Fi activo"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar."</string>
+ <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar"</string>
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Saltar"</string>
@@ -1270,7 +1274,7 @@
<string name="sync_really_delete" msgid="2572600103122596243">"Eliminar elementos"</string>
<string name="sync_undo_deletes" msgid="2941317360600338602">"Deshacer las eliminaciones"</string>
<string name="sync_do_nothing" msgid="3743764740430821845">"No hacer nada por ahora"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"Seleccionar una cuenta"</string>
+ <string name="choose_account_label" msgid="5655203089746423927">"Selecciona una cuenta"</string>
<string name="add_account_label" msgid="2935267344849993553">"Añadir una cuenta"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Añadir cuenta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
@@ -1372,11 +1376,11 @@
<string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
<string name="kg_emergency_call_label" msgid="684946192523830531">"Llamada de emergencia"</string>
<string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"¿Has olvidado el patrón?"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Patrón incorrecto"</string>
+ <string name="kg_wrong_pattern" msgid="1850806070801358830">"El patrón es incorrecto."</string>
<string name="kg_wrong_password" msgid="2333281762128113157">"Contraseña incorrecta"</string>
<string name="kg_wrong_pin" msgid="1131306510833563801">"PIN incorrecto"</string>
<string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Inténtalo de nuevo en <xliff:g id="NUMBER">%d</xliff:g> segundos."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Dibuja tu patrón."</string>
+ <string name="kg_pattern_instructions" msgid="398978611683075868">"Dibuja tu patrón de desbloqueo."</string>
<string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Introduce el PIN de la tarjeta SIM."</string>
<string name="kg_pin_instructions" msgid="2377242233495111557">"Introduce el PIN."</string>
<string name="kg_password_instructions" msgid="5753646556186936819">"Escribe tu contraseña."</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Has fallado <xliff:g id="NUMBER_0">%d</xliff:g> veces al dibujar el patrón de desbloqueo. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, deberás usar una cuenta de correo electrónico para desbloquear el tablet."\n\n" Inténtalo de nuevo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Has fallado <xliff:g id="NUMBER_0">%d</xliff:g> veces al dibujar el patrón de desbloqueo. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, deberás usar una cuenta de correo electrónico para desbloquear el teléfono."\n\n" Inténtalo de nuevo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"¿Subir el volumen por encima del nivel de seguridad?"\n"Escuchar sonidos a alto volumen durante largos períodos de tiempo puede dañar tus oídos."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index e379eac..7fb52fd 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Võimaldab rakendusel teada saada süsteemi sisemist olekut. Pahatahtlikud rakendused võivad hankida mitmesugust privaatset ja turvateavet, mida neil tavaliselt kunagi vaja ei lähe."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ekraanisisu taastamine"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Võimaldab rakendusel kätte saada aktiivse akna sisu. Pahatahtlikud rakendused võivad hankida kogu akna sisu ja uurida kogu selle teksti, välja arvatud paroole."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"hangi akna teave"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Võimaldab rakendusel hankida teavet aknahalduri akende kohta. Pahatahtlikud rakendused võivad hankida teavet, mis on mõeldud süsteemisiseseks kasutamiseks."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtreeri sündmused"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil tahvelarvuti avada meilikontoga."\n\n" Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil telefon avada meilikontoga."\n\n" Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Kas suurendada helitugevust üle ohutu piiri?"\n"Pikaajaline suure helitugevusega muusika kuulamine võib kahjustada kuulmist."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 51fc6ca..468ef987 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"به برنامه اجازه می‎دهد تا وضعیت داخلی سیستم را بازیابی کند. برنامه‎های مخرب می‎توانند انواع مختلفی از اطلاعات خصوصی و امن را که معمولا به آن‌ها نیاز ندارند، بازیابی کنند."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"بازیابی محتوای صفحه"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"به برنامه اجازه می‎دهد تا محتوای پنجره فعال را بازیابی کند. برنامه‎های مخرب می‎توانند کل محتوای پنجره را بازیابی کنند و همه متن آنرا به غیر از گذرواژه‎ها امتحان کنند."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"بازیابی اطلاعات پنجره"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"به یک برنامه کاربردی اجازه می‌دهد که اطلاعات مربوط به پنجره‌ها را از مدیریت پنجره بازیابی کند. برنامه‌های کاربردی مخرب ممکن است اطلاعاتی که برای استفاده سیستم داخلی درنظر گرفته شده‌اند را بازیابی کنند."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"فیلتر کردن رویدادها"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه کشیده‎اید. بعد از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب ایمیل قفل رایانه لوحی خود را باز کنید."\n\n" لطفاً پس از <xliff:g id="NUMBER_2">%d</xliff:g> ثانیه دوباره امتحان کنید."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه کشیده‌اید. پس از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب ایمیل قفل تلفن خود را باز کنید."\n\n" لطفاً پس از <xliff:g id="NUMBER_2">%d</xliff:g> ثانیه دوباره امتحان کنید."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"صدا به بالاتر از سطح ایمن افزایش یابد؟"\n"گوش دادن به صدای بلند برای زمان‌های طولانی می‌تواند به شنوایی شما آسیب برساند."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index bc472b1..b4ba021 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Antaa sovelluksen noutaa järjestelmän sisäisen tilan. Haitalliset sovellukset voivat noutaa paljon yksityisiä ja suojattuja tietoja, joita niiden ei pitäisi tarvita normaalisti."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"nouda näytön sisältö"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Antaa sovelluksen noutaa aktiivisen ikkunan sisällön. Haitalliset sovellukset voivat noutaa koko ikkunan sisällön ja tarkastella sen kaikkea tekstiä lukuun ottamatta salasanoja."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"nouda ikkunoiden tietoja"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Antaa sovelluksen noutaa ikkunoiden tietoja ikkunanhallinnasta. Haitalliset sovellukset voivat noutaa tietoja, jotka on tarkoitettu järjestelmän sisäiseen käyttöön."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"suodata tapahtumat"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Piirsit lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos piirrät kuvion väärin vielä <xliff:g id="NUMBER_1">%d</xliff:g> kertaa, sinua pyydetään poistamaan tablet-laitteesi lukitus sähköpostitilin avulla."\n\n" Yritä uudelleen <xliff:g id="NUMBER_2">%d</xliff:g> sekunnin kuluttua."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Piirsit lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos piirrät kuvion väärin vielä <xliff:g id="NUMBER_1">%d</xliff:g> kertaa, sinua pyydetään poistamaan puhelimesi lukitus sähköpostitilin avulla."\n\n" Yritä uudelleen <xliff:g id="NUMBER_2">%d</xliff:g> sekunnin kuluttua."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Nostetaanko äänenvoimakkuus turvallista tasoa voimakkaammaksi?"\n"Jos kuuntelet suurella äänenvoimakkuudella pitkiä aikoja, kuulosi voi vahingoittua."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index a824281..1a109d0 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permet à l\'application de récupérer l\'état interne du système. Des applications malveillantes peuvent récupérer de nombreuses informations confidentielles et sécurisées dont elles ne devraient pas avoir besoin normalement."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"récupérer le contenu de l\'écran"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permet à l\'application de récupérer le contenu de la fenêtre active. Des applications malveillantes peuvent exploiter cette fonctionnalité pour récupérer et lire la totalité du contenu de la fenêtre, à l\'exception des mots de passe."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"récupérer les informations sur les fenêtres"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permet à une application de récupérer les informations sur les fenêtres depuis le gestionnaire de fenêtres. Des applications malveillantes peuvent récupérer des informations destinées à un usage interne du système."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrer les événements"</string>
@@ -320,7 +324,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"Affichage de fenêtres non autorisées"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permet à l\'application de créer des fenêtres destinées à être utilisées par l\'interface utilisateur du système interne. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
<string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ignorer les autres applications"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Permet à l\'application d\'afficher des graphismes dans d\'autres applications ou sur certaines parties de l\'interface utilisateur. Ceux-ci peuvent interférer lorsque vous utilisez l\'interface de n\'importe quelle application, ou modifier ce que vous pensez voir dans d\'autres applications."</string>
+ <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Permet à l\'application d\'ignorer d\'autres applications ou certaines parties de l\'interface utilisateur. Cela peut altérer votre utilisation de l\'interface de n\'importe quelle application, ou modifier ce que vous pensez voir dans d\'autres applications."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"Réglage de la vitesse des animations"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permet à l\'application de modifier à tout moment la vitesse générale des animations pour les ralentir ou les accélérer."</string>
<string name="permlab_manageAppTokens" msgid="1286505717050121370">"gérer les jetons d\'application"</string>
@@ -431,7 +435,7 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"autoriser l\'installation d\'un fournisseur de services de localisation"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Permet de créer des sources de localisation fictives à des fins de tests ou pour installer un nouveau fournisseur de position. L\'application peut ainsi modifier la position et/ou l\'état renvoyé par d\'autres sources de localisation telles que le GPS ou les fournisseurs de position."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"position précise (GPS et réseau)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Permet à l\'application d\'obtenir votre position exacte à l\'aide du récepteur satellite GPS (Global Positioning System) ou des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puissent déterminer où vous vous trouvez, le cas échéant. Cette autorisation peut entraîner une utilisation accrue de la batterie."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Permet à l\'application d\'obtenir votre position exacte à l\'aide du récepteur satellite GPS ou des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puissent déterminer où vous vous trouvez, le cas échéant. Cette autorisation peut entraîner une utilisation accrue de la batterie."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"position approximative (réseau)"</string>
<string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Permet à l\'application d\'obtenir votre position approximative. Celle-ci est fournie par des services de localisation sur la base des sources de localisation de réseau tels que les points d\'accès Wi-Fi et les antennes-relais. Ces services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse déterminer où vous vous trouvez de façon approximative, le cas échéant."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Accès à SurfaceFlinger"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre tablette à l\'aide d\'un compte de messagerie électronique."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre téléphone à l\'aide d\'un compte de messagerie électronique."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Augmenter le volume au-dessus du niveau de sécurité ?"\n"L\'écoute à un volume élevé pendant des périodes prolongées peut endommager votre audition."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index bb57654..556412d 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"एप्‍लिकेशन को सिस्‍टम की आंतरिक स्‍थिति पुनर्प्राप्त करने देता है. दुर्भावनापूर्ण एप्‍लिकेशन विभिन्‍न प्रकार की निजी और सुरक्षा जानकारी प्राप्त कर सकते हैं जिनकी उन्‍हें सामान्‍यत: आवश्‍यकता नहीं होती."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"स्‍क्रीन सामग्री पुनर्प्राप्त करें"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"एप्‍लिकेशन को सक्रिय विंडो की सामग्री पुनर्प्राप्त करने देता है. दुर्भावनापूर्ण एप्‍लिकेशन विंडो की संपूर्ण सामग्री प्राप्त कर सकते हैं और पासवर्ड को छोड़कर इसके सभी पाठ जांच सकते हैं."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"विंडो जानकारी प्राप्त करें"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"एप्‍लिकेशन को विंडो प्रबंधक से windows के बारे में जानकारी प्राप्त करने देता है. दुर्भावनापूर्ण एप्‍लिकेशन आंतरिक सिस्टम उपयोग के लिए अभिप्रेत जानकारी को प्राप्त कर सकते हैं."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"ईवेंट फ़िल्टर करें"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने टेबलेट को किसी ईमेल खाते के उपयोग से अनलॉक करने के लिए कहा जाएगा."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने फ़ोन को किसी ईमेल खाते का उपयोग करके अनलॉक करने के लिए कहा जाएगा."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"वॉल्यूम को सुरक्षित स्तर से अधिक करें?"\n"अधिक देर तक उच्च वॉल्यूम पर सुनने से आपकी सुनने की क्षमता को नुकसान हो सकता है."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 2270766..70cf7cc 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Omogućuje aplikaciji dohvaćanje unutarnjeg stanja sustava. Zlonamjerne aplikacije mogu dohvatiti razne privatne i sigurnosne podatke koje im inače nikada ne bi trebale biti potrebne."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"dohvaćanje sadržaja zaslona"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Omogućuje aplikaciji dohvaćanje sadržaja aktivnog prozora. Zlonamjerne aplikacije mogu dohvatiti sav sadržaj prozora i pregledati sav njegov tekst osim zaporki."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"dohvaćanje informacija o prozoru"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Aplikaciji omogućuje dohvaćanje informacija o prozorima iz upravitelja prozora. Zlonamjerne aplikacije mogu dohvaćati informacije koje su namijenjene za internu uporabu sustava."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtriranje događaja"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%d</xliff:g> puta. Nakon još ovoliko neuspješnih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g> morat ćete otključati tabletno računalo pomoću računa e-pošte."\n\n" Pokušajte ponovo za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%d</xliff:g> puta. Nakon još ovoliko neuspješnih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g> morat ćete otključati telefon pomoću računa e-pošte."\n\n" Pokušajte ponovo za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Pojačati iznad sigurne razine?"\n"Dulje slušanje preglasne glazbe može vam oštetiti sluh."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index c36c10e..1009fa5 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Lehetővé teszi az alkalmazás számára, hogy lekérje a rendszer belső állapotát. A rosszindulatú programok lekérhetnek számos olyan privát és biztonságos adatot, amelyekre normál esetben soha nincs szükségük."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"a képernyő tartalmának lekérése"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Lehetővé teszi az alkalmazás számára az aktív ablak tartalmának letöltését. A rosszindulatú alkalmazások letölthetik az ablak teljes tartalmát, és a jelszavak kivételével az összes szöveget megvizsgálhatják."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ablakkal kapcsolatos információk lekérése"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Lehetővé teszi, hogy az alkalmazás információkat kérjen le az ablakkezelőben lévő ablakokkal kapcsolatban. A rosszindulatú alkalmazások belső rendszerhasználathoz szükséges információkat kérhetnek le."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"események szűrése"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül rajzolta le a feloldási mintát. További <xliff:g id="NUMBER_1">%d</xliff:g> sikertelen kísérlet után egy e-mail fiók használatával kell feloldania a táblagépét."\n\n" Kérjük, próbálja újra <xliff:g id="NUMBER_2">%d</xliff:g> másodperc múlva."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül rajzolta le a feloldási mintát. További <xliff:g id="NUMBER_1">%d</xliff:g> sikertelen kísérlet után egy e-mail fiók használatával kell feloldania a telefonját."\n\n" Kérjük, próbálja újra <xliff:g id="NUMBER_2">%d</xliff:g> másodperc múlva."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"A biztonságos szint fölé emeli a hangerőt?"\n"Ha hosszú ideig hangosan hallgatja a zenét, az károsíthatja a hallását."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 7204b04..132e634 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Mengizinkan apl mengambil keadaan internal sistem. Apl berbahaya dapat mengambil berbagai informasi pribadi dan aman yang seharusnya tidak diperlukan."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ambil konten layar"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Mengizinkan apl mengambil konten jendela aktif. Apl berbahaya dapat mengambil seluruh konten jendela dan memeriksa semua teksnya kecuali sandi."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"mengambil info jendela"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Mengizinkan aplikasi mengambil informasi tentang jendela dari pengelola jendela. Aplikasi berbahaya dapat mengambil informasi yang ditujukan untuk penggunaan sistem internal."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"memfilter acara"</string>
@@ -623,7 +627,7 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Mengharuskan data apl yang disimpan untuk dienkripsi."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Nonaktifkan kamera"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Mencegah penggunaan semua kamera perangkat."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Menonaktifkan ftur di pengaman"</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Nonaktifkan fitur di pengaman"</string>
<string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Mencegah penggunaan beberapa fitur dalam pengaman."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Rumah"</item>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci tablet menggunakan akun email."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci ponsel menggunakan akun email."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Naikkan volume di atas tingkat aman?"\n"Mendengarkan volume tinggi dalam jangka waktu yang lama dapat merusak pendengaran Anda."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index ffcd0e3..1ddbb59 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Consente all\'applicazione di recuperare lo stato interno del sistema. Le applicazioni dannose potrebbero recuperare una vasta gamma di informazioni private e protette di cui normalmente non dovrebbero mai avere bisogno."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"recupero dei contenuti della schermata"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Consente all\'applicazione di recuperare i contenuti della finestra attiva. Le applicazioni dannose potrebbero recuperare l\'intero contenuto della finestra ed esaminare tutto il testo, tranne le password."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"recupero di informazioni sulle finestre"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Consente a un\'applicazione di recuperare informazioni sulle finestre dalla gestione finestre. Le applicazioni dannose potrebbero recuperare informazioni destinate all\'utilizzo da parte del sistema interno."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtro eventi"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, ti verrà chiesto di sbloccare il tablet con un account email."\n\n" Riprova tra <xliff:g id="NUMBER_2">%d</xliff:g> secondi."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, ti verrà chiesto di sbloccare il telefono con un account email."\n\n" Riprova tra <xliff:g id="NUMBER_2">%d</xliff:g> secondi."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Aumentare il volume oltre il livello di sicurezza?"\n"Ascoltare musica ad alto volume per lunghi periodi potrebbe danneggiare l\'udito."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index b318243..95a938a 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"מאפשר ליישום לאחזר את המצב הפנימי של המערכת. יישומים זדוניים עלולים לאחזר מגוון רחב של מידע אישי ונתוני אבטחה, שעל פי רוב לעולם לא יזדקקו להם."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"אחזר את תוכן המסך"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"מאפשר ליישום לאחזר את התוכן של החלון הפעיל. יישומים זדוניים עלולים לאחזר את תוכן החלון כולו ולבחון את כל הטקסט שבו, מלבד סיסמאות."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"אחזר מידע חלון"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"מאפשר ליישום לאחזר מידע לגבי החלונות ממנהל החלונות. יישומים זדוניים עשויים לאחזר מידע המיועד לשימוש מערכת פנימי."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"סנן אירועים"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, תתבקש לבטל את נעילת הטאבלט באמצעות חשבון דוא\"ל‏."\n\n"נסה שוב בעוד <xliff:g id="NUMBER_2">%d</xliff:g> שניות."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, תתבקש לבטל את נעילת הטלפון באמצעות חשבון דוא\"ל‏."\n\n"נסה שוב בעוד <xliff:g id="NUMBER_2">%d</xliff:g> שניות."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"האם להעלות את עוצמת הקול מעל לרמה הבטוחה?"\n"האזנה בעוצמת קול גבוהה למשך זמן ארוך עלולה לפגוע בשמיעה."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 190eb97..61c925d 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"システムの内部状態の取得をアプリに許可します。この許可を悪意のあるアプリに利用されると、通常必要ないはずの各種の非公開/機密情報が取得される恐れがあります。"</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"画面のコンテンツの取得"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"作業中のウィンドウの内容を取得することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ウィンドウの内容全体が取得されてパスワード以外のテキストがすべてチェックされる恐れがあります。"</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ウィンドウ情報の取得"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"ウィンドウマネージャからウィンドウに関する情報を取得することをアプリに許可します。悪意のあるアプリが内部システムの利用を目的に情報を取得する恐れがあります。"</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"イベントのフィルタリング"</string>
@@ -555,7 +559,7 @@
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetoothの設定へのアクセス"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ローカルのBluetoothタブレットを設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ローカルのBluetooth携帯端末を設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAXからの接続と切断"</string>
+ <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAXへの接続と切断"</string>
<string name="permdesc_accessWimaxState" msgid="6360102877261978887">"WiMAXがONになっているかどうかを識別し、接続されているWiMAXネットワークの情報を表示することをアプリに許可します。"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX状態の変更"</string>
<string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"タブレットのWiMAXネットワークへの接続と切断をアプリに許可します。"</string>
@@ -748,7 +752,7 @@
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PINコードが正しくありません。"</string>
<string name="keyguard_label_text" msgid="861796461028298424">"MENU、0キーでロック解除"</string>
<string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"緊急通報番号"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"通信サービスはありません。"</string>
+ <string name="lockscreen_carrier_default" msgid="8963839242565653192">"通信サービスはありません"</string>
<string name="lockscreen_screen_locked" msgid="7288443074806832904">"画面ロック中"</string>
<string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"MENUキーでロック解除(または緊急通報)"</string>
<string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"MENUキーでロック解除"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Wi-Fiオープンネットワークが利用できます"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fiネットワークにログイン"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"ネットワークにログイン"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fiに接続できませんでした"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"To:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"必要なPINを入力してください:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"携帯端末が<xliff:g id="DEVICE_NAME">%1$s</xliff:g>に接続されている間は一時的にWi-Fi接続が解除されます。"</string>
<string name="select_character" msgid="3365550120617701745">"文字を挿入"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMSメッセージの送信中"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;が大量のSMSメッセージを送信しています。このアプリにこのままメッセージの送信を許可しますか?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回間違えると、タブレットのロック解除にメールアカウントが必要になります。"\n\n"<xliff:g id="NUMBER_2">%d</xliff:g>秒以内にもう一度お試しください。"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回間違えると、携帯端末のロック解除にメールアカウントが必要になります。"\n\n"<xliff:g id="NUMBER_2">%d</xliff:g>秒以内にもう一度お試しください。"</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"安全レベルを超えるまで音量を上げますか?"\n"大音量で長時間聞き続けると、聴力を損なう恐れがあります。"</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index e91bda5..6285bc2 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"앱이 시스템의 내부 상태를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 일반적으로 필요하지 않은 다양한 개인정보와 보안정보를 검색할 수 있습니다."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"화면 콘텐츠 검색"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"앱이 활성 창의 콘텐츠를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 전체 창의 콘텐츠를 검색하여 비밀번호를 제외한 모든 텍스트를 살펴볼 수 있습니다."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"창 관련 정보 가져오기"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"애플리케이션이 Window Manager에서 창 관련 정보를 가져오도록 허용합니다. 이 경우 악성 앱이 내부 시스템에서만 사용하도록 되어 있는 정보를 가져올 수 있습니다."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"일정 필터링"</string>
@@ -608,7 +612,7 @@
<string name="policylab_watchLogin" msgid="914130646942199503">"화면 잠금해제 시도 모니터링"</string>
<string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"화면 잠금해제 시 비밀번호를 잘못 입력한 횟수를 모니터링하고, 잘못된 비밀번호 입력 횟수가 너무 많은 경우 태블릿을 잠그거나 태블릿에 있는 데이터를 모두 지웁니다."</string>
<string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"화면 잠금해제 시 비밀번호를 잘못 입력한 횟수를 모니터링하고, 잘못된 비밀번호 입력 횟수가 너무 많은 경우 휴대전화를 잠그거나 휴대전화에 있는 데이터를 모두 지웁니다."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"화면 잠금해제 비밀번호를 변경합니다."</string>
+ <string name="policylab_resetPassword" msgid="2620077191242688955">"화면 잠금해제 비밀번호 변경"</string>
<string name="policydesc_resetPassword" msgid="605963962301904458">"화면 잠금해제 비밀번호를 변경합니다."</string>
<string name="policylab_forceLock" msgid="2274085384704248431">"화면 잠금"</string>
<string name="policydesc_forceLock" msgid="1141797588403827138">"화면을 잠그는 방법과 시기를 제어합니다."</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 그렸습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 이메일 계정을 사용하여 태블릿을 잠금해제해야 합니다."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g>초 후에 다시 시도해 주세요."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 그렸습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 이메일 계정을 사용하여 휴대전화를 잠금해제해야 합니다."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g>초 후에 다시 시도해 주세요."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"안전한 수준 이상으로 볼륨을 높이시겠습니까?"\n"높은 볼륨으로 장시간 청취하면 청력에 손상이 올 수 있습니다."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-land/arrays.xml b/core/res/res/values-land/arrays.xml
index 1cd9e74..240b9e4 100644
--- a/core/res/res/values-land/arrays.xml
+++ b/core/res/res/values-land/arrays.xml
@@ -22,16 +22,16 @@
<!-- Resources for GlowPadView in LockScreen -->
<array name="lockscreen_targets_when_silent">
<item>@null</item>"
- <item>@drawable/ic_lockscreen_unlock</item>
<item>@drawable/ic_action_assist_generic</item>
<item>@drawable/ic_lockscreen_soundon</item>
+ <item>@drawable/ic_lockscreen_unlock</item>
</array>
<array name="lockscreen_target_descriptions_when_silent">
<item>@null</item>
- <item>@string/description_target_unlock</item>
<item>@string/description_target_search</item>
<item>@string/description_target_soundon</item>
+ <item>@string/description_target_unlock</item>
</array>
<array name="lockscreen_direction_descriptions">
@@ -43,30 +43,30 @@
<array name="lockscreen_targets_when_soundon">
<item>@null</item>
- <item>@drawable/ic_lockscreen_unlock</item>
<item>@drawable/ic_action_assist_generic</item>
<item>@drawable/ic_lockscreen_silent</item>
+ <item>@drawable/ic_lockscreen_unlock</item>
</array>
<array name="lockscreen_target_descriptions_when_soundon">
<item>@null</item>
- <item>@string/description_target_unlock</item>
<item>@string/description_target_search</item>
<item>@string/description_target_silent</item>
+ <item>@string/description_target_unlock</item>
</array>
<array name="lockscreen_targets_with_camera">
<item>@null</item>
- <item>@drawable/ic_lockscreen_unlock</item>
<item>@drawable/ic_action_assist_generic</item>
<item>@drawable/ic_lockscreen_camera</item>
+ <item>@drawable/ic_lockscreen_unlock</item>
</array>
<array name="lockscreen_target_descriptions_with_camera">
<item>@null</item>
- <item>@string/description_target_unlock</item>
<item>@string/description_target_search</item>
<item>@string/description_target_camera</item>
+ <item>@string/description_target_unlock</item>
</array>
</resources>
diff --git a/core/res/res/values-land/dimens.xml b/core/res/res/values-land/dimens.xml
index 6f96852..07f62ed 100644
--- a/core/res/res/values-land/dimens.xml
+++ b/core/res/res/values-land/dimens.xml
@@ -43,4 +43,11 @@
<!-- Size of clock font in LockScreen on Unsecure unlock screen. -->
<dimen name="keyguard_lockscreen_clock_font_size">70sp</dimen>
+ <!-- Shift emergency button from the left edge by this amount. Used by landscape layout on
+ phones -->
+ <dimen name="kg_emergency_button_shift">30dp</dimen>
+
+ <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) -->
+ <dimen name="kg_secure_padding_height">0dp</dimen>
+
</resources>
diff --git a/core/res/res/values-land/integers.xml b/core/res/res/values-land/integers.xml
new file mode 100644
index 0000000..1b8f575
--- /dev/null
+++ b/core/res/res/values-land/integers.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources>
+ <integer name="kg_security_flip_duration">150</integer>
+ <integer name="kg_security_fade_duration">150</integer>
+
+ <!-- Gravity to make KeyguardSelectorView work in multiple orientations
+ 0x13 == "left|center_vertical" -->
+ <integer name="kg_selector_gravity">0x13</integer>
+</resources> \ No newline at end of file
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 9a53ab2..ffe374e 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Leidžiama programai nuskaityti vidinę sistemos būseną. Kenkėjiškos programos gali nuskaityti daug įvairios privačios ir saugios informacijos, kurios paprastai joms niekada neturėtų reikėti."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"nuskaityti ekrano turinį"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Leidžiama programai nuskaityti aktyvaus lango turinį. Kenkėjiškos programos gali bandyti išgauti viso lango turinį ir tirti visą jo tekstą, išskyrus slaptažodžius."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"gauti lango informaciją"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Leidžiama programai iš langų tvarkytuvės gauti informaciją apie langus. Kenkėjiškos programos gali gauti informaciją, kuri skirta naudoti sistemos viduje."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrų įvykiai"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%d</xliff:g> k. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. būsite paprašyti atrakinti planšetinį kompiuterį naudodami „Google“ prisijungimo duomenis."\n\n" Bandykite dar kartą po <xliff:g id="NUMBER_2">%d</xliff:g> sek."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%d</xliff:g> k. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. būsite paprašyti atrakinti telefoną naudodami „Google“ prisijungimo duomenis."\n\n" Bandykite dar kartą po <xliff:g id="NUMBER_2">%d</xliff:g> sek."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Padidinti garsumą viršijant saugų lygį?"\n"Ilgai klausantis dideliu garsumu gali sutrikti klausa."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index e68d9525..d1266c6 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Ļauj lietotnei izgūt sistēmas iekšējo statusu. Ļaunprātīgas lietotnes var izgūt dažādu privātu un drošu informāciju, kas parasti tām nav nepieciešama."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"Ekrāna satura iegūšana"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Ļauj lietotnei izgūt aktīva loga saturu. Ļaunprātīgas lietotnes var izgūt visu loga saturu un pārbaudīt visu tā tekstu, izņemot paroles."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"Izgūt informāciju par logiem"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Ļauj lietojumprogrammai no logu pārvaldnieka izgūt informāciju par logiem. Ļaunprātīgas lietotnes var izgūt informāciju, kas ir paredzēta iekšējai izmantošanai sistēmā."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"Filtrēt notikumus"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem planšetdators būs jāatbloķē, izmantojot e-pasta kontu."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_2">%d</xliff:g> sekundēm."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem tālrunis būs jāatbloķē, izmantojot e-pasta kontu."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_2">%d</xliff:g> sekundēm."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Vai palielināt skaļumu virs drošības līmeņa?"\n"Ilgstoši klausoties skaņu lielā skaļumā, var tikt bojāta dzirde."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 47e0e1c..cf9ceb6 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Membenarkan apl untuk mendapatkan semula keadaan dalaman sistem. Apl hasad boleh mendapatkan pelbagai maklumat peribadi dan selamat yang biasanya tidak ia perlukan."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"dapatkan semula kandungan skrin"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Membenarkan apl untuk mendapatkan kandungan tetingkap aktif. Apl hasad boleh mengambil keseluruhan kandungan tetingkap dan memeriksa semua teks kecuali kata laluan."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"dapatkan maklumat tetingkap"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Membolehkan aplikasi mendapatkan maklumat tentang tetingkap dari pengurus tetingkap. Apl hasad boleh mendapatkan maklumat yang bertujuan untuk penggunaan sistem dalaman."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"tapis acara"</string>
@@ -623,7 +627,7 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Memerlukan data apl yang disimpan itu disulitkan."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Lumpuhkan kamera"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Menghalang penggunaan semua kamera peranti."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Lumpuhkan ciri dalam pelindung kekunci"</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Lumpuh ciri pelindung kekunci"</string>
<string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Cegah penggunaan beberapa ciri dalam pelindung kekunci."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Laman Utama"</item>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Rangkaian Wi-Fi terbuka tersedia"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Log masuk ke rangkaian Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Log masuk ke rangkaian"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak boleh menyambung kepada Wi-Fi"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kepada:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Taipkan PIN yang diperlukan:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefon akan dinyahsambung buat sementara dari Wi-Fi semasa disambungkan ke <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Masukkan aksara"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Menghantar mesej SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sedang menghantar banyak mesej SMS. Adakah anda mahu membenarkan apl ini terus menghantar mesej?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah tersilap melukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci tablet anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah tersilap lukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci telefon anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Tingkatkan kelantangan di atas tahap selamat?"\n"Mendengar pada kelantangan tinggi untuk tempoh yang panjang boleh merosakkan pendengaran anda."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 9f34e83..d913062 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Lar appen hente ut informasjon om systemets indre tilstand. Ondsinnede apper kan hente et bredt spekter av privat og sikker informasjon som de vanligvis aldri burde ha behov for."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"hent av skjerminnhold"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Lar appen hente ut innholdet i det aktive vinduet. Ondsinnede apper kan hente ut hele vindusinnholdet og undersøke all teksten, med unntak av passord."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"hente vindusinformasjon"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Lar appen hente informasjon om vinduene fra vindusbehandleren. Skadelige apper kan hente informasjon som ikke er ment for intern systembruk."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrere hendelser"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har tegnet opplåsningsmønsteret feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, blir du bedt om å låse opp nettbrettet via en e-postkonto."\n\n" Prøv på nytt om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har tegnet opplåsningsmønsteret feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, blir du bedt om å låse opp telefonen via en e-postkonto."\n\n" Prøv på nytt om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Vil du øke lydnivået over trygt nivå?"\n"Lytting på høyt lydnivå i lange perioder kan skade hørselen din."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 4672960..99e5600 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Hiermee kan de app de interne systeemstatus ophalen. Schadelijke apps kunnen een grote hoeveelheid persoonlijke en beveiligde informatie ophalen die ze normaal gesproken nooit nodig hebben."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"scherminhoud ophalen"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Hiermee kan de app de inhoud van het actieve venster ophalen. Schadelijke apps kunnen de volledige inhoud van het venster ophalen en alle tekst bekijken, behalve wachtwoorden."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"venstergegevens ophalen"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Toestaan dat een app gegevens over vensters kan ophalen uit vensterbeheer. Schadelijke apps kunnen gegevens ophalen die zijn bedoeld voor interne systeemfunctionaliteit."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"evenementen filteren"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"U heeft uw ontgrendelingspatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getekend. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen wordt u gevraagd uw tablet te ontgrendelen via een e-mailaccount."\n\n" Probeer het over <xliff:g id="NUMBER_2">%d</xliff:g> seconden opnieuw."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"U heeft uw ontgrendelingspatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getekend. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen wordt u gevraagd uw telefoon te ontgrendelen via een e-mailaccount."\n\n" Probeer het over <xliff:g id="NUMBER_2">%d</xliff:g> seconden opnieuw."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Wilt u het volume verhogen tot boven het aanbevolen geluidsniveau?"\n"Te lang luisteren op een te hoog volume kan leiden tot gehoorbeschadiging."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 6895a70..19d42ab 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Pozwala aplikacji na pobieranie wewnętrznego stanu systemu. Złośliwe aplikacje mogą pobrać szereg prywatnych i zabezpieczonych informacji, które normalnie nie są im potrzebne."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"pobieranie zawartości ekranu"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Pozwala aplikacji na pobieranie zawartości aktywnego okna. Złośliwe aplikacje mogą pobrać całą zawartość okna i przeanalizować znajdujący się w nim tekst z wyjątkiem haseł."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"pobieranie informacji o oknach"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Zezwala aplikacji na pobieranie informacji o oknach z menedżera okien. Złośliwe aplikacje mogą pobierać informacje przeznaczone do użytku wewnętrznego w systemie."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrowanie zdarzeń"</string>
@@ -431,9 +435,9 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"uprawnienia do instalowania dostawcy danych o lokalizacji"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Tworzenie pozorowanych źródeł lokalizacji dla potrzeb testów lub instalacji nowego dostawcy informacji o lokalizacji. Aplikacje z tym uprawnieniem mogą zastąpić lokalizację i/lub stan zwracany przez inne źródła lokalizacji, takie jak GPS lub dostawcy danych o lokalizacji."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"dokładna lokalizacja (na podstawie sygnału GPS i sieci)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Zezwala aplikacji na określanie dokładnej lokalizacji dzięki sygnałowi GPS lub źródłom lokalizacji sieciowej, takim jak wieże sieci komórkowych i sieci Wi-Fi. Te usługi lokalizacyjne muszą być włączone i dostępne dla urządzenia, by mogła korzystać z nich aplikacja. Gdy to uprawnienie jest aktywne, aplikacje mogą określać Twoje położenie. Pamiętaj jednak, że telefon zużywa wtedy więcej energii."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Zezwala aplikacji na określanie dokładnej lokalizacji dzięki sygnałowi GPS lub źródłom lokalizacji sieciowej, takim jak wieże sieci komórkowych i sieci Wi-Fi. Te usługi lokalizacyjne muszą być włączone i dostępne dla urządzenia, by aplikacja mogła z nich korzystać. Gdy to uprawnienie jest aktywne, aplikacje mogą określać Twoje położenie. Pamiętaj jednak, że telefon zużywa wtedy więcej energii."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"przybliżona lokalizacja (na podstawie sieci)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Zezwala aplikacji na określanie przybliżonej lokalizacji. Jest ona odczytywana z usług lokalizacyjnych wykorzystujących źródła lokalizacji sieciowej, takie jak wieże sieci komórkowych i sieci Wi-Fi. Te usługi lokalizacyjne muszą być włączone i dostępne dla urządzenia, by mogła korzystać z nich aplikacja. Gdy to uprawnienie jest aktywne, aplikacje mogą określać Twoje przybliżone położenie."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Zezwala aplikacji na określanie przybliżonej lokalizacji. Jest ona odczytywana z usług lokalizacyjnych wykorzystujących źródła lokalizacji sieciowej, takie jak wieże sieci komórkowych i sieci Wi-Fi. Te usługi lokalizacyjne muszą być włączone i dostępne dla urządzenia, by aplikacja mogła z nich korzystać. Gdy to uprawnienie jest aktywne, aplikacje mogą określać Twoje przybliżone położenie."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"dostęp do usługi SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Pozwala aplikacji na wykorzystanie funkcji niskiego poziomu usługi SurfaceFlinger."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"czytanie bufora ramki"</string>
@@ -1407,5 +1411,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> nieprawidłowo narysowałeś wzór odblokowania. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach konieczne będzie odblokowanie tabletu przy użyciu danych logowania na konto Google."\n\n" Spróbuj ponownie za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> nieprawidłowo narysowałeś wzór odblokowania. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach konieczne będzie odblokowanie telefonu przy użyciu danych logowania na konto Google."\n\n" Spróbuj ponownie za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Chcesz ustawić głośność powyżej bezpiecznego poziomu?"\n"Słuchanie przy dużym poziomie głośności przez dłuższy czas może doprowadzić do uszkodzenia słuchu."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 2fef6df..afbcd42 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permite que a aplicação obtenha o estado interno do sistema. As aplicações maliciosas podem obter uma ampla variedade de dados privados e seguros de que, normalmente, nunca devem necessitar."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"obter o conteúdo do ecrã"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permite que a aplicação obtenha o conteúdo da janela ativa. As aplicações maliciosas podem obter todo o conteúdo da janela e examinar todo o texto, exceto as palavras-passe."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"obter informações da janela"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permite que uma aplicação obtenha informações sobre as janelas a partir do gestor de janelas. Aplicações maliciosas podem obter informações que se destinam à utilização interna do sistema."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrar eventos"</string>
@@ -1138,7 +1142,7 @@
<string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"Se ativar a memória de armazenamento USB, algumas aplicações que estiver a utilizar serão paradas e poderão ficar indisponíveis até desativar a memória de armazenamento USB."</string>
<string name="dlg_error_title" msgid="7323658469626514207">"Operação USB sem êxito"</string>
<string name="dlg_ok" msgid="7376953167039865701">"OK"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Ligado como um aparelho multimédia"</string>
+ <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Ligado como um dispositivo 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>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ligado a um acessório USB"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Desenhou a sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem sucesso, ser-lhe-á pedido para desbloquear o tablet através de uma conta de email."\n\n" Tente novamente dentro de <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Desenhou a sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem sucesso, ser-lhe-á pedido para desbloquear o telemóvel através de uma conta de email."\n\n" Tente novamente dentro de <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Aumentar o volume acima do nível de segurança?"\n"Ouvir em volume alto durante longos períodos de tempo poderá prejudicar a sua audição."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index cade007..cbf2dfe 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permite que o aplicativo recupere o estado interno do sistema. Aplicativos maliciosos podem obter uma grande variedade de informações privadas e seguras que eles normalmente não precisariam."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"recuperar conteúdo da tela"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permite que o aplicativo recupere o conteúdo da janela ativa. Aplicativos maliciosos podem recuperar o conteúdo da janela inteira e examinar todo o texto, exceto as senhas."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"recuperar informações de janelas"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permite que o aplicativo recupere informações sobre as janelas do gerenciador de janelas. Aplicativos mal-intencionados podem recuperar informações destinadas ao uso interno do sistema."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrar eventos"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Redes Wi-Fi abertas disponíveis"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Fazer login na rede Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Acessar a rede"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível se conectar a redes Wi-Fi"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Para:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Digite o PIN obrigatório:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"O telefone desconectará temporariamente da rede Wi-Fi enquanto estiver conectado a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Inserir caractere"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensagens SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envia uma grande quantidade de mensagens SMS. Deseja permitir que este aplicativo continue enviando mensagens?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear seu tablet."\n\n" Tente novamente em <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear."\n\n" Tente novamente em <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Aumentar o volume acima do nível seguro?"\n"A audição em volume elevado por períodos longos pode prejudicar sua audição."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index dc06930..1241346 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -428,6 +428,10 @@
<skip />
<!-- no translation found for permdesc_retrieve_window_content (3193269069469700265) -->
<skip />
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<!-- no translation found for permlab_retrieve_window_info (8532295199112519378) -->
<skip />
<!-- no translation found for permdesc_retrieve_window_info (4998836370424186849) -->
@@ -2266,6 +2270,12 @@
<skip />
<!-- no translation found for safe_media_volume_warning (7382971871993371648) -->
<skip />
- <!-- no translation found for kg_temp_back_string (5812983904056640466) -->
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
<skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 81c304e..b5d4e59 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Permite aplicaţiei să preia starea internă a sistemului. Aplicaţiile rău intenţionate pot să preia o gamă variată de informaţii private şi securizate, de care în mod normal nu ar avea nevoie niciodată."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"preia conţinutul de pe ecran"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Permite aplicaţiei să preia conţinutul ferestrei active. Aplicaţiile rău intenţionate pot să preia întregul conţinut al ferestrei şi să examineze integral textul acesteia, cu excepţia parolelor."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"preluare informaţii despre ferestre"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Permite unei aplicaţii să preia informaţii despre ferestrele din managerul de ferestre. Aplicaţiile rău intenţionate pot prelua informaţii care sunt destinate utilizării sistemului intern."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrare evenimente"</string>
@@ -623,8 +627,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Necesită ca datele aplicaţiei stocate să fie criptate."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Dezactivaţi camerele foto"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Împiedicaţi utilizarea camerelor foto de pe dispozitiv."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Protecţia dezact. funcţiile"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Previne utilizarea unora dintre funcţii la activarea protecţiei tastaturii."</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Dezactiv. funcții după blocare"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Previne utilizarea unora dintre funcții când tastatura este blocată."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Domiciliu"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Reţele Wi-Fi deschise disponibile"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Conectaţi-vă în reţeaua Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Conectaţi-vă la reţea"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nu se poate conecta la Wi-Fi"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Către:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Introduceţi codul PIN necesar:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Cod PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefonul se va deconecta temporar de la reţeaua Wi-Fi cât timp este conectat la <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Introduceţi caracterul"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Se trimit mesaje SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; trimite un număr mare de mesaje SMS. Permiteţi acestei aplicaţii să trimită în continuare mesaje?"</string>
@@ -1260,8 +1262,8 @@
<string name="share" msgid="1778686618230011964">"Distribuiţi"</string>
<string name="find" msgid="4808270900322985960">"Găsiţi"</string>
<string name="websearch" msgid="4337157977400211589">"Căutare pe web"</string>
- <string name="find_next" msgid="5742124618942193978">"Găsiţi următoarea"</string>
- <string name="find_previous" msgid="2196723669388360506">"Găsiţi anterioara"</string>
+ <string name="find_next" msgid="5742124618942193978">"Următorul rezultat"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Rezultatul anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Solicitare de locaţie de la <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Solicitare de locaţie"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Solicitat de <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Aţi desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%d</xliff:g> ori. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, vi se va solicita să deblocaţi tableta cu ajutorul unui cont de e-mail."\n\n" Încercaţi din nou peste <xliff:g id="NUMBER_2">%d</xliff:g> (de) secunde."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Aţi desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%d</xliff:g> ori. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, vi se va solicita să deblocaţi telefonul cu ajutorul unui cont de e-mail."\n\n" Încercaţi din nou peste <xliff:g id="NUMBER_2">%d</xliff:g> (de) secunde."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Ridicaţi volumul mai sus de nivelul sigur?"\n"Ascultarea la volum ridicat pe perioade lungi de timp vă poate afecta auzul."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index b26880b..4900df7 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Приложение сможет получать данные о внутреннем состоянии системы. Вредоносные программы смогут получать личную и защищенную информацию, к которой у них не должно быть доступа."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"получать доступ к содержанию экрана"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Приложение сможет получать контент активного окна. Вредоносные программы смогут перехватывать такой контент и анализировать любой текст, кроме паролей."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"доступ к информации в окне"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Открывает приложению доступ к информации из диспетчера окон. Обратите внимание, что вредоносное ПО может получить доступ к некоторой системной информации устройства."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"Фильтрация событий"</string>
@@ -1258,8 +1262,8 @@
<string name="share" msgid="1778686618230011964">"Отправить"</string>
<string name="find" msgid="4808270900322985960">"Найти"</string>
<string name="websearch" msgid="4337157977400211589">"Веб-поиск"</string>
- <string name="find_next" msgid="5742124618942193978">"Найти след."</string>
- <string name="find_previous" msgid="2196723669388360506">"Найти пред."</string>
+ <string name="find_next" msgid="5742124618942193978">"Cлед."</string>
+ <string name="find_previous" msgid="2196723669388360506">"Пред."</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Пользователь <xliff:g id="NAME">%s</xliff:g> запрашивает ваше местоположение"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Запрос местоположения"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Запрашивает <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки планшетного ПК потребуется войти в аккаунт Google."\n\n"Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки телефона потребуется войти в аккаунт Google."\n\n"Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Увеличить громкость до небезопасного уровня?"\n"Долговременное прослушивание на такой громкости может повредить слух."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 4d8cc6d..dbe7b9e 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Umožňuje aplikácii načítať interný stav systému. Škodlivé aplikácie môžu načítať široký rozsah súkromných a zabezpečených informácií, ktoré by obvykle nemali nikdy potrebovať."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"načítanie obsahu obrazovky"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Umožňuje aplikácii načítať obsah aktívneho okna. Škodlivé aplikácie môžu získať celý obsah okna a preskúmať celý jeho text okrem hesiel."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"načítanie informácií o oknách"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Umožňuje aplikácii načítať informácie o oknách zo správcu okien. Škodlivé aplikácie môžu načítať informácie, ktoré sú určené pre interné využitie systému."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrovanie udalostí"</string>
@@ -623,7 +627,7 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Vyžadovať šifrovanie uložených údajov aplikácií."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Zakázať fotoaparáty"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Zakázať používanie všetkých fotoaparátov zariadenia."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Zakáz. funkcie v zámke kláves."</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Zákaz funkcie v zámke kláves."</string>
<string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Zabrániť používaniu niektorých funkcií v zámke klávesov."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Domovská stránka"</item>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"K dispozícii sú verejné siete Wi-Fi"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Prihlásenie sa do siete Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Prihláste sa do siete"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepodarilo sa pripojiť k sieti Wi-Fi"</string>
@@ -1091,16 +1094,15 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Komu:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Zadajte požadovaný kód PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefón bude počas pripojenia k zariadeniu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> od siete Wi-Fi dočasne odpojený."</string>
<string name="select_character" msgid="3365550120617701745">"Vkladanie znakov"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Odosielanie správ SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Aplikácia &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; posiela veľký počet správ SMS. Chcete tejto aplikácií povoliť, aby aj naďalej posielala správy?"</string>
<string name="sms_control_yes" msgid="3663725993855816807">"Povoliť"</string>
<string name="sms_control_no" msgid="625438561395534982">"Odmietnuť"</string>
<string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; chce odoslať správu na adresu &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
- <string name="sms_short_code_details" msgid="4992814738863678373">"To môže spôsobiť, že budú na váš mobilný účet účtované poplatky."</string>
- <string name="sms_premium_short_code_details" msgid="4291752905667807485">"To spôsobí, že budú na váš mobilný účet účtované poplatky."</string>
+ <string name="sms_short_code_details" msgid="4992814738863678373">"To môže spôsobiť, že sa na váš mobilný účet budú účtovať poplatky."</string>
+ <string name="sms_premium_short_code_details" msgid="4291752905667807485">"To spôsobí, že sa na váš mobilný účet budú účtovať poplatky."</string>
<string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Odoslať"</string>
<string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Zrušiť"</string>
<string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Zapamätať si voľbu"</string>
@@ -1119,7 +1121,7 @@
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"NOVINKA: "</font></string>
<string name="perms_description_app" msgid="5139836143293299417">"Poskytuje aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="no_permissions" msgid="7283357728219338112">"Nevyžadujú sa žiadne oprávnenia."</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"môžu vám byť účtované poplatky"</string>
+ <string name="perm_costs_money" msgid="4902470324142151116">"môžu sa vám účtovať poplatky"</string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Veľkokapacitné úložisko USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Zariadenie USB pripojené"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Zariadenie ste pripojili k počítaču pomocou portu USB. Ak chcete kopírovať súbory z počítača do ukladacieho priestoru USB v zariadení so systémom Android alebo naopak, dotknite sa tlačidla nižšie."</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste nesprávne nakreslili svoj bezpečnostný vzor. Po ďalších <xliff:g id="NUMBER_1">%d</xliff:g> neúspešných pokusoch sa zobrazí výzva na odomknutie tabletu pomocou e-mailového účtu."\n\n" Skúste to znova o <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste nesprávne nakreslili svoj bezpečnostný vzor. Po <xliff:g id="NUMBER_1">%d</xliff:g> ďalších neúspešných pokusoch sa zobrazí výzva na odomknutie telefónu pomocou e-mailového účtu."\n\n" Skúste to znova o <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Chcete zvýšiť hlasitosť nad bezpečnú úroveň?"\n"Dlhodobé počúvanie pri vysokej hlasitosti môže viesť k poškodeniu vášho sluchu."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index d6c6581..48e74e6 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Programu omogoča prejemanje notranjega stanja sistema. Zlonamerni programi lahko na ta način dobijo različne zasebne in varnostne podatke, ki jih običajno ne potrebujejo."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"prenos vsebine zaslona"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Programu omogoča dostop do vsebine aktivnega okna. Zlonamerni programi lahko dobijo vso vsebino okna in pregledajo njeno besedilo razen gesel."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"prenos podatkov o oknih"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Omogoča, da aplikacija iz upravitelja oken pridobiva podatke o oknih. Zlonamerne aplikacije lahko pridobivajo podatke, namenjene za notranjo uporabo v sistemu."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtriranje dogodkov"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Vzorec za odklepanje ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno vnesli. Po nadaljnjih <xliff:g id="NUMBER_1">%d</xliff:g> neuspešnih poskusih boste pozvani, da tablični računalnik odklenete z e-poštnim računom."\n\n"Poskusite znova čez <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Vzorec za odklepanje ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno vnesli. Po nadaljnjih <xliff:g id="NUMBER_1">%d</xliff:g> neuspešnih poskusih boste pozvani, da odklenete telefon z Googlovimi podatki za prijavo."\n\n"Poskusite znova čez <xliff:g id="NUMBER_2">%d</xliff:g> s."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Želite povečati glasnost nad varno raven?"\n"Dolgotrajna izpostavljenost glasnim tonom lahko poškoduje sluh."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index a66a14b..9f62b99 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Дозвољава апликацији да преузме интерни статус система. Злонамерне апликације могу да преузимају разноврсне приватне и заштићене информације које им обично нису потребне."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"преузимање садржаја екрана"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Дозвољава апликацији да преузме садржај активног прозора. Злонамерне апликације могу да преузму цео садржај прозора и прегледају целокупан текст, осим лозинки."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"преузимање информација о прозорима"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Омогућава апликацији да преузме информације о прозорима од менаџера прозора. Злонамерне апликације могу да преузму информације које су намењене за интерну употребу система."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"филтрирање догађаја"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу налога е-поште."\n\n"Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу налога е-поште."\n\n"Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Желите да појачате звук изнад безбедног нивоа?"\n"Ако дуже време слушате гласну музику, може доћи до оштећења слуха."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index b656b96..4850525 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Tillåter att appen hämtar systemets interna status. Skadliga appar kan hämta privat och skyddad information som normalt aldrig ska behövas."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"hämta skärminnehåll"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Tillåter att appen hämtar innehållet i det aktiva fönstret. Skadliga appar kan hämta allt innehåll i fönstret och läsa all text utom lösenord."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"hämta information om fönster"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Tillåter att appen hämtar information om fönstren från fönsterhanteraren. Skadliga appar kan hämta information som är avsedd för användning i det interna systemet."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"filtrera händelser"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> försök ombeds du låsa upp surfplattan med ett e-postkonto."\n\n" Försök igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> försök ombeds du låsa upp mobilen med hjälp av ett e-postkonto."\n\n" Försök igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Vill du höja volymen över den säkra nivån?"\n"Om du lyssnar på hög volym under långa perioder kan din hörsel skadas."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 475d719..7e82320 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Inaruhusu programu kutoa hali ya ndani ya mfumo. Programu hasidi zinaweza kutoa aina nyingi za taarifa za faragha na salama ambazo kwa kawaida hazihitaji."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"epua maudhui ya skrini"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Inaruhusu programu kutoa maudhui ya dirisha amilifu. Programu hasidi zinaweza kutoa maudhui yote ya dirisha na kuchunguza maandishi yake yote isipokuwa nenosiri."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"okoa maelezo ya dirisha"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Huruhusu programu kuokoa maelezo kuhusu madirisha kutoka kwenye kidhibiti dirisha. Huenda programu hasidi ikakusanya maelezo ambayo yamekusudiwa kwa matumizi ya mfumo wa ndani."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"chuja matukio"</string>
@@ -1405,6 +1409,13 @@
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Umejaribu kufungua simu kwa njia isiyo sahihi mara <xliff:g id="NUMBER">%d</xliff:g>. Sasa simu itarejeshwa katika mfumo chaguo-msingi ilivyotoka kiwandani."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Umekosea katika kuweka mchoro wako wa kufungua mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> bila kufaulu, utaombwa kufungua kompyuta yako ndogo kwa kutumia akaunti yako ya barua pepe."\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_2">%d</xliff:g>."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Umekosea kuchora mchoro wako wa kufungua mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> yasiyofaulu, utaombwa kufungua simu yako kwa kutumia akaunti ya barua pepe."\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_2">%d</xliff:g>."</string>
- <string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Ongeza sauti zaidi ya kiwango salama? "\n"Kusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu usikilizaji wako."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Ongeza sauti zaidi ya kiwango salama? "\n"Kusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu uwezo wako wa kusikia."</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw600dp/bools.xml b/core/res/res/values-sw600dp/bools.xml
index b8db31f..2f65eab 100644
--- a/core/res/res/values-sw600dp/bools.xml
+++ b/core/res/res/values-sw600dp/bools.xml
@@ -16,4 +16,5 @@
<resources>
<bool name="target_honeycomb_needs_options_menu">false</bool>
+ <bool name="show_ongoing_ime_switcher">true</bool>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index f90c509..fd2cfa8 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"อนุญาตให้แอปพลิเคชันเรียกดูสถานะภายในของระบบ แอปพลิเคชันที่เป็นอันตรายอาจเรียกดูข้อมูลส่วนบุคคลและข้อมูลที่ต้องรักษาความปลอดภัยหลากหลายประเภทที่ปกติแล้วไม่จำเป็นต้องใช้แต่อย่างใด"</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ดึงเนื้อหาหน้าจอ"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"อนุญาตให้แอปพลิเคชันดึงเนื้อหาของหน้าต่างที่ใช้งานอยู่ แอปพลิเคชันที่เป็นอันตรายอาจดึงเนื้อหาจากหน้าต่างทั้งหมดและตรวจสอบข้อความทั้งหมดยกเว้นรหัสผ่าน"</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"เรียกข้อมูลหน้าต่าง"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับหน้าต่างจากเครื่องมือจัดการหน้าต่าง แอปพลิเคชันที่เป็นอันตรายอาจดึงข้อมูลที่มีไว้เพื่อการใช้ของระบบภายใน"</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"กรองกิจกรรม"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากทำไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง ระบบจะขอให้คุณปลดล็อกแท็บเล็ตโดยใช้บัญชีอีเมล"\n\n" โปรดลองอีกครั้งใน <xliff:g id="NUMBER_2">%d</xliff:g> วินาที"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากทำไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง ระบบจะขอให้คุณปลดล็อกโทรศัพท์โดยใช้ับัญชีอีเมล"\n\n" โปรดลองอีกครั้งในอีก <xliff:g id="NUMBER_2">%d</xliff:g> วินาที"</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"เพิ่มระดับเสียงจนเกินระดับที่ปลอดภัยหรือไม่"\n"การฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 9bef861..8bfa8c3 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Pinapayagan ang app na mabawi ang panloob na katayuan ng system. Maaaring bawiin ng nakakahamak na apps ang iba\'t ibang pribado at secure na impormasyon na hindi kailanman normal na kinakailangan ng mga ito."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"kunin ang nilalaman ng screen"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Pinapayagan ang app na bawiin ang nilalaman ng aktibong window. Maaaring bawiin ng nakakahamak na apps ang kabuuang nilalaman ng window at suriin ang lahat ng teksto nito maliban sa mga password."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"kunin ang impormasyon ng window"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Pinapayagan ang application na kumuha ng impormasyon tungkol sa mga window mula sa tagapamahala ng window. Maaaring kumuha ang mga nakakahamak na app ng impormasyong nilayon para sa panloob na paggamit ng system."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"i-filter ang mga kaganapan"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, hihilingin sa iyong i-unlock ang tablet mo gamit ang isang email account."\n\n" Subukang muli sa loob ng <xliff:g id="NUMBER_2">%d</xliff:g> (na) segundo."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, hihilingin sa iyong i-unlock ang telepono mo gamit ang isang email account."\n\n" Subukang muli sa loob ng <xliff:g id="NUMBER_2">%d</xliff:g> (na) segundo."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Lakasan ang volume nang lagpas sa ligtas na antas?"\n"Maaaring mapinsala ng pakikinig sa malakas na volume sa loob ng mahahabang panahon ang iyong pandinig."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 09a1805..a85f58c 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Uygulamaya, sistemin iç durumunu alma izni verir. Kötü amaçlı uygulamalar normalde gerek duymadıkları çok çeşitli özel ve güvenli bilgilerini alabilir."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ekran içeriğini al"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Uygulamaya, etkin pencerenin içeriğini alma izni verir. Kötü amaçlı uygulamalar tüm pencere içeriğini alabilir ve şifreleri hariç tüm metni inceleyebilir."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"pencere bilgilerini al"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Uygulamaya, pencere yöneticisinden pencerelerle ilgili bilgi alma izni verir. Zararlı uygulamalar dahili sistem kullanımına yönelik bilgileri alabilir."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"etkinlikleri filtrele"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Kullanılabilir kablosuz ağları aç"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Kablosuz ağda oturum açın"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Ağda oturum açın"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kablosuz bağlantısı kurulamadı"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Alıcı:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Gerekli PIN\'i yazın:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefon <xliff:g id="DEVICE_NAME">%1$s</xliff:g> adlı cihaza bağlıyken Kablosuz ağ bağlantısı geçici olarak kesilecektir"</string>
<string name="select_character" msgid="3365550120617701745">"Karakter ekle"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS mesajları gönderiliyor"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; çok sayıda SMS mesajı gönderiyor. Bu uygulamanın mesaj göndermeye devam etmesine izin veriyor musunuz?"</string>
@@ -1119,7 +1121,7 @@
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"YENİ: "</font></string>
<string name="perms_description_app" msgid="5139836143293299417">"Sağlayan: <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="no_permissions" msgid="7283357728219338112">"İzin gerektirmez"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"bunun için sizden ödeme alınabilir"</string>
+ <string name="perm_costs_money" msgid="4902470324142151116">"bunun için sizden ücret alınabilir"</string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB yığın belleği"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB bağlandı"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Cihazınızı USB ile bilgisayarınıza bağladınız. Bilgisayarınız ile Android\'inizin USB belleği arasında dosya kopyalamak istiyorsanız aşağıdaki düğmeye dokunun."</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış çizdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> başarısız denemeden sonra, tabletinizi bir e-posta hesabı kullanarak açmanız istenir."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> saniye içinde tekrar deneyin."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış çizdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> başarısız denemeden sonra telefonunuzu bir e-posta hesabı kullanarak açmanız istenir."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> saniye içinde tekrar deneyin."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Ses düzeyi güvenli seviyenin üzerine çıkarılsın mı?"\n"Yüksek sesle uzun süre dinlemek işitme yetinize zarar verebilir."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index f9222fc..6d462f0 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Дозволяє програмі отримувати дані про внутрішній стан системи. Шкідливі програми можуть отримувати значну кількість особистої та конфіденційної інформації, яка для них не призначена."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"отримувати вміст екрана"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Дозволяє програмі отримувати вміст активного вікна. Шкідливі програми можуть отримувати весь вміст вікна та вивчати весь його текст, окрім паролів."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"отримувати інформацію про вікна"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Дозволяє програмі отримувати інформацію про вікна від диспетчера вікон. Шкідливі програми можуть отримувати інформацію, яка призначена для внутрішнього користування системи."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"фільтрувати події"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі з’явиться запит розблокувати планшетний ПК за допомогою облікового запису електронної пошти."\n\n" Повторіть спробу через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі з’явиться запит розблокувати телефон за допомогою облікового запису електронної пошти."\n\n" Повторіть спробу через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Збільшити гучність понад безпечний рівень?"\n"Надто гучне прослуховування впродовж тривалого періоду може пошкодити слух."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 8ab2674..c451888 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Cho phép ứng dụng truy xuất trạng thái nội bộ của hệ thống. Ứng dụng độc hại có thể truy xuất nhiều loại thông tin riêng tư và bảo mật khác nhau mà thông thường chúng không bao giờ cần."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"truy xuất nội dung màn hình"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Cho phép ứng dụng truy xuất nội dung của cửa sổ hiện hành. Ứng dụng độc hại có thể truy xuất toàn bộ nội dung của cửa sổ cũng như xem xét toàn bộ văn bản của cửa sổ ngoại trừ mật khẩu."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"truy xuất thông tin cửa sổ"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Cho phép ứng dụng truy xuất thông tin về các cửa sổ từ trình quản lý cửa sổ. Các ứng dụng độc hại có thể truy xuất thông tin được dành để sử dụng trong hệ thống nội bộ."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"lọc sự kiện"</string>
@@ -1097,7 +1101,7 @@
<string name="sms_control_yes" msgid="3663725993855816807">"Cho phép"</string>
<string name="sms_control_no" msgid="625438561395534982">"Từ chối"</string>
<string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; muốn gửi thư đến &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
- <string name="sms_short_code_details" msgid="4992814738863678373">"Điều này có thể dẫn đến việc tính phí vào tài khoản di động của bạn."</string>
+ <string name="sms_short_code_details" msgid="4992814738863678373">"Điều này có thể khiến bạn phải trả phí cho tài khoản di động của mình."</string>
<string name="sms_premium_short_code_details" msgid="4291752905667807485">"Điều này sẽ dẫn đến việc tính phí vào tài khoản di động của bạn."</string>
<string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Gửi"</string>
<string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Hủy"</string>
@@ -1259,7 +1263,7 @@
<string name="find" msgid="4808270900322985960">"Tìm"</string>
<string name="websearch" msgid="4337157977400211589">"Tìm kiếm trên web"</string>
<string name="find_next" msgid="5742124618942193978">"Tìm kết quả phù hợp tiếp theo"</string>
- <string name="find_previous" msgid="2196723669388360506">"Tìm kết quả phù hợp trước đó"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Tìm kết quả phù hợp trước"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Yêu cầu vị trí từ <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Yêu cầu vị trí"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Được yêu cầu bởi <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần thử không thành công nữa, bạn sẽ được yêu cầu mở khóa máy tính bảng bằng tài khoản email."\n\n" Vui lòng thử lại sau <xliff:g id="NUMBER_2">%d</xliff:g> giây."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần thử không thành công nữa, bạn sẽ được yêu cầu mở khóa điện thoại bằng tài khoản email."\n\n" Vui lòng thử lại sau <xliff:g id="NUMBER_2">%d</xliff:g> giây."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Tăng âm lượng trên mức an toàn?"\n"Nghe ở âm lượng cao trong thời gian dài có thể gây hại cho thính giác của bạn."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-w720dp/bools.xml b/core/res/res/values-w720dp/bools.xml
index cd595ad..352c319 100644
--- a/core/res/res/values-w720dp/bools.xml
+++ b/core/res/res/values-w720dp/bools.xml
@@ -16,5 +16,4 @@
<resources>
<bool name="action_bar_expanded_action_views_exclusive">false</bool>
- <bool name="show_ongoing_ime_switcher">true</bool>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 1ecddbd..888844e 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"允许应用检索系统的内部状态。恶意应用可能会检索一般情况下绝不需要检索的多种私人信息和安全信息。"</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"检索屏幕内容"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"允许应用检索活动窗口的内容。恶意应用可能会检索整个窗口的内容,并检查其中除密码以外的所有文字。"</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"检索窗口信息"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"允许应用通过窗口管理器检索窗口信息。恶意应用可能会检索供内部系统使用的信息。"</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"过滤事件"</string>
@@ -310,9 +314,9 @@
<string name="permlab_setAlwaysFinish" msgid="550958507798796965">"强制关闭后台应用"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"允许应用控制活动在转入后台后是否立即结束。普通应用绝不需要此权限。"</string>
<string name="permlab_batteryStats" msgid="2789610673514103364">"读取电池使用统计信息"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"允许应用读取目前的低电量使用数据,此权限可让应用了解关于您使用了哪些应用的详细信息。"</string>
+ <string name="permdesc_batteryStats" msgid="5897346582882915114">"允许应用读取当前电量使用情况的基础数据,此权限可让应用了解关于您使用了哪些应用的详细信息。"</string>
<string name="permlab_updateBatteryStats" msgid="3719689764536379557">"修改电池使用统计信息"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"允许该应用修改收集到的电池统计信息(不建议一般应用使用)。"</string>
+ <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"允许该应用修改收集到的电池统计信息。普通应用不应使用此权限。"</string>
<string name="permlab_backup" msgid="470013022865453920">"控制系统备份和还原"</string>
<string name="permdesc_backup" msgid="6912230525140589891">"允许应用控制系统的备份和还原机制。普通应用不能使用此权限。"</string>
<string name="permlab_confirm_full_backup" msgid="5557071325804469102">"确认完整备份或恢复操作"</string>
@@ -320,7 +324,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"显示未授权的窗口"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"允许该应用创建供内部系统用户界面使用的窗口。普通应用不应使用此权限。"</string>
<string name="permlab_systemAlertWindow" msgid="3543347980839518613">"在其他应用之上显示内容"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"允许该应用在其他应用顶层或用户界面的特定部分绘图。这可能会干扰您在所有应用中的界面使用行为,或使您在其他应用中预期看到的内容发生变化。"</string>
+ <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"允许该应用在其他应用之上或用户界面的特定部分绘图。这可能会干扰您对所有应用界面的使用,或使您在其他应用中看到的内容发生变化。"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"修改全局动画速度"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"允许该应用随时更改全局动画速度(加快或减慢)。"</string>
<string name="permlab_manageAppTokens" msgid="1286505717050121370">"管理应用令牌"</string>
@@ -368,8 +372,8 @@
<string name="permlab_installPackages" msgid="2199128482820306924">"直接安装应用"</string>
<string name="permdesc_installPackages" msgid="5628530972548071284">"允许应用安装新的或更新的 Andr​​oid 程序包。恶意应用可能借此添加具有任意权限的新应用。"</string>
<string name="permlab_clearAppCache" msgid="7487279391723526815">"删除所有应用缓存数据"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"允许该应用删除其他应用缓存目录中的文件,从而释放平板电脑存储空间。此权限可能会导致其他应用的启动速度变慢,因为应用必须重新检索数据。"</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"允许该应用删除其他应用缓存目录中的文件,从而释放手机存储空间。此权限可能会导致其他应用的启动速度变慢,因为应用必须重新检索数据。"</string>
+ <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"允许该应用删除其他应用的缓存目录中的文件,从而释放平板电脑存储空间。此权限可能会导致其他应用的启动速度变慢,因为应用必须重新检索数据。"</string>
+ <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"允许该应用删除其他应用的缓存目录中的文件,从而释放手机存储空间。此权限可能会导致其他应用的启动速度变慢,因为应用必须重新检索数据。"</string>
<string name="permlab_movePackage" msgid="3289890271645921411">"移动应用资源"</string>
<string name="permdesc_movePackage" msgid="319562217778244524">"允许应用在内部与外部媒体之间移动应用资源。"</string>
<string name="permlab_readLogs" msgid="6615778543198967614">"查阅敏感日志数据"</string>
@@ -431,9 +435,9 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"允许安装位置信息提供程序"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"创建用于测试的模拟位置源或安装新的位置提供程序。此权限可让该应用覆盖由其他位置源(如 GPS)或位置提供程序返回的位置和/或状态信息。"</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"精确位置(基于 GPS 和网络)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"允许该应用通过全球定位系统 (GPS) 或位置信息来源(例如基站和 Wi-Fi)获取您的精确位置信息。您必须在设备上开启这些位置服务,才能供应用使用。应用会使用此类服务确定您的位置,这可能会消耗更多电量。"</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"允许该应用通过全球定位系统 (GPS) 或网络位置信息源(例如基站和 Wi-Fi)获取您的精确位置信息。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的位置,这可能会消耗更多电量。"</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"大致位置(基于网络)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"允许该应用获取您的大致位置信息。这类位置信息来源于使用网络位置来源(例如基站和 Wi-Fi)的位置服务。您必须在设备上开启这些位置服务,才能供应用使用。应用会使用此类服务确定您的大概位置。"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"允许该应用获取您的大致位置信息。这类位置信息来自于使用网络位置信息源(例如基站和 Wi-Fi)的位置服务。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的大概位置。"</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"访问 SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"允许应用使用 SurfaceFlinger 低级功能。"</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"读取帧缓冲区"</string>
@@ -555,7 +559,7 @@
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"访问蓝牙设置"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允许应用配置本地蓝牙平板电脑,以及发现远程设备并进行配对。"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允许应用配置本地蓝牙手机,以及发现远程设备并进行配对。"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"建立或中断与 WiMAX 的网络连接"</string>
+ <string name="permlab_accessWimaxState" msgid="4195907010610205703">"建立或中断 WiMAX 网络连接"</string>
<string name="permdesc_accessWimaxState" msgid="6360102877261978887">"允许该应用确定是否启用了 WiMAX 以及连接的任何 WiMAX 网络的相关信息。"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"更改 WiMAX 状态"</string>
<string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"允许该应用建立和断开平板电脑与 WiMAX 网络之间的连接。"</string>
@@ -579,7 +583,7 @@
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"允许应用修改您当前同步的 Feed。恶意应用可能会更改您的同步 Feed。"</string>
<string name="permlab_readDictionary" msgid="4107101525746035718">"读取您添加到词典的字词"</string>
<string name="permdesc_readDictionary" msgid="659614600338904243">"允许该应用读取用户可能已在用户词典中存储的所有字词、名称和词组。"</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"将字词添加到用户定义的词典"</string>
+ <string name="permlab_writeDictionary" msgid="2183110402314441106">"向用户定义的词典添加字词"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"允许应用向用户词典中写入新词。"</string>
<string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"测试对受保护存储空间的访问权限"</string>
<string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"测试对受保护存储空间的访问权限"</string>
@@ -1097,8 +1101,8 @@
<string name="sms_control_yes" msgid="3663725993855816807">"允许"</string>
<string name="sms_control_no" msgid="625438561395534982">"拒绝"</string>
<string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;想要向 &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; 发送一条短信。"</string>
- <string name="sms_short_code_details" msgid="4992814738863678373">"这可能会通过您的移动帐户计费。"</string>
- <string name="sms_premium_short_code_details" msgid="4291752905667807485">"这将通过您的移动帐户计费。"</string>
+ <string name="sms_short_code_details" msgid="4992814738863678373">"这可能会导致您的手机号产生费用。"</string>
+ <string name="sms_premium_short_code_details" msgid="4291752905667807485">"这会导致您的手机号产生费用。"</string>
<string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"发送"</string>
<string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"取消"</string>
<string name="sms_short_code_remember_choice" msgid="5289538592272218136">"记住我的选择"</string>
@@ -1117,7 +1121,7 @@
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"新增:"</font></string>
<string name="perms_description_app" msgid="5139836143293299417">"由“<xliff:g id="APP_NAME">%1$s</xliff:g>”提供。"</string>
<string name="no_permissions" msgid="7283357728219338112">"不需要任何权限"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"这可能需要付费"</string>
+ <string name="perm_costs_money" msgid="4902470324142151116">"这可能会产生费用"</string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB 大容量存储设备"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"已连接 USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"您已通过 USB 连接至计算机。如果您要在计算机与 Android 设备的 USB 存储设备之间复制文件,请触摸下面的按钮。"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁平板电脑。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁手机。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"将音量调高到安全级别以上?"\n"长时间聆听高音量可能会损伤听力。"</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 5d29f4d..14f1580 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"允許應用程式擷取系統內部狀態。請注意,惡意應用程式可能利用此功能異常擷取各類私人資訊和安全性資訊。"</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"擷取螢幕內容"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"允許應用程式擷取使用中的視窗內容。請注意,惡意應用程式可能利用此功能擷取完整視窗內容,並檢視密碼之外的所有文字。"</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"擷取視窗資訊"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"允許應用程式透過視窗管理程式擷取視窗的相關資訊。請注意,惡意應用程式可能藉此擷取僅限內部系統使用的資訊。"</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"篩選活動"</string>
@@ -1406,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您的解鎖圖形已畫錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統就會要求您透過電子郵件帳戶解除平板電腦的鎖定狀態。"\n\n"請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您的解鎖圖形已畫錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統就會要求您透過電子郵件帳戶解除手機的鎖定狀態。"\n\n"請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"將音量調高至安全等級以上?"\n"長時間聆聽偏高音量可能會損害您的聽力。"</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 249df57..0fdea74 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -287,6 +287,10 @@
<string name="permdesc_dump" msgid="1778299088692290329">"Ivumela insiza ukuthi ithole kabusha ingaphakathi lesistimu. izinsiza ezinobungozi zingathola kabusha inqwaba yolwazi oluyimfihlo noluvikelekile ezingajwayele ukuthi ziludinge."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"letha okuqukethwe kwesikrini"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Ivumela insiza ukuthi ithole okuqukethe kwi-Window. Izinsiza ezinobungozi zingathola kabush iwindi eliphelele bese ibheka konke okuqukethwe ngaphandle kwaaaphasiwedi."</string>
+ <!-- no translation found for permlab_temporary_enable_accessibility (2312612135127310254) -->
+ <skip />
+ <!-- no translation found for permdesc_temporary_enable_accessibility (8079456293182975464) -->
+ <skip />
<string name="permlab_retrieve_window_info" msgid="8532295199112519378">"buyisa ulwazi lewindi"</string>
<string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Ivumela uhlelo lokusebenza ukubuyisa ulwazi mayelana namawindi avela kumphathi wewindi. Izinhlelo zokusebenza zingabuyisa ulwazi olubhekiswe ukusetshenziselwa kohlelo lwangaphakathi."</string>
<string name="permlab_filter_events" msgid="8675535648807427389">"hlunga imicimbi"</string>
@@ -1072,8 +1076,7 @@
<item quantity="other" msgid="7915895323644292768">"Vula amanethiwekhi we-Wi-Fi atholakalayo"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Ngena enethiwekhini ye-Wi-Fi network"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Ngena ngemvume kunethiwekhi"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ayikwazanga ukuxhuma kwi-Wi-Fi"</string>
@@ -1091,8 +1094,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Ku:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Faka i-PIN edingekayo:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Ifoni izonqamuka okwesikhashana ku-Wi-Fi ngenkathi ixhumeke ku-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Faka uhlamvu"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Ithumela imiyalezo ye-SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"I-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ithumela inombolo enkulu yemilayezo ye-SMS. Ufuna ukuvumela lolu hlelo lokusebenza ukuqhubeka ukuthumela imilayezo?"</string>
@@ -1408,5 +1410,12 @@
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Udwebe ngokungalungile iphathini yakho yokuvula izikhathi ezingu-<xliff:g id="NUMBER_0">%d</xliff:g>. Emva <xliff:g id="NUMBER_1">%d</xliff:g> kweminye imizamo engaphumelelanga, uzocelwa ukuvula ithebhulethi yakho usebenzisa ukungena ngemvume kwi-Google."\n\n" Sicela uzame futhi kwengu-<xliff:g id="NUMBER_2">%d</xliff:g> imizuzwana."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Ukulayisha ungenisa iphathini yakho yokuvula ngendlela engalungile izikhathi ezi-<xliff:g id="NUMBER_0">%d</xliff:g> Emva kweminye imizamo engu-<xliff:g id="NUMBER_1">%d</xliff:g>, uzocelwa ukuvula ifoni yakho usebenzisa ukungena ngemvume ku-Google"\n\n" Zame futhi emumva kwengu- <xliff:g id="NUMBER_2">%d</xliff:g> imizuzwana."</string>
<string name="safe_media_volume_warning" product="default" msgid="7382971871993371648">"Khulisa ivolomu ngaphezu kweleveli yokuphepha?"\n"Ukulalela ngevolomu ephezulu izikhathi ezide kungalimaza ukuzwa kwakho."</string>
- <string name="kg_temp_back_string" msgid="5812983904056640466">"&lt;"</string>
+ <!-- no translation found for continue_to_enable_accessibility (7763028886898319514) -->
+ <skip />
+ <!-- no translation found for accessibility_enabled (1381972048564547685) -->
+ <skip />
+ <!-- no translation found for enable_accessibility_canceled (6820851401471507415) -->
+ <skip />
+ <!-- no translation found for user_switched (1030428084901139446) -->
+ <skip />
</resources>
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index eba354b..07d0d74 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -90,7 +90,7 @@
<color name="perms_dangerous_grp_color">#33b5e5</color>
<color name="perms_dangerous_perm_color">#33b5e5</color>
<color name="shadow">#cc222222</color>
- <color name="perms_costs_money">#ffffb060</color>
+ <color name="perms_costs_money">#ffffbb33</color>
<!-- For search-related UIs -->
<color name="search_url_text_normal">#7fa87f</color>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 114b9c7..63ed18e 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -261,12 +261,31 @@
<dimen name="kg_status_clock_font_size">94dp</dimen>
<!-- Size of the date font in keyguard's status view -->
- <dimen name="kg_status_date_font_size">24dp</dimen>
+ <dimen name="kg_status_date_font_size">17dp</dimen>
<!-- Size of the generic status lines keyguard's status view -->
- <dimen name="kg_status_line_font_size">12sp</dimen>
+ <dimen name="kg_status_line_font_size">14sp</dimen>
<!-- Size of margin on the right of keyguard's status view -->
- <dimen name="kg_status_line_font_right_margin">32dp</dimen>
+ <dimen name="kg_status_line_font_right_margin">0dp</dimen>
+
+ <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
+ <dimen name="kg_key_horizontal_gap">0dp</dimen>
+
+ <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
+ <dimen name="kg_key_vertical_gap">0dp</dimen>
+
+ <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
+ <dimen name="kg_pin_key_height">60dp</dimen>
+
+ <!-- Shift emergency button from the left edge by this amount. Used by landscape layout on
+ phones -->
+ <dimen name="kg_emergency_button_shift">0dp</dimen>
+
+ <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) -->
+ <dimen name="kg_secure_padding_height">46dp</dimen>
+
+ <!-- Touch slop for the global toggle accessibility gesture -->
+ <dimen name="accessibility_touch_slop">80dip</dimen>
</resources>
diff --git a/core/res/res/values/donottranslate-cldr.xml b/core/res/res/values/donottranslate-cldr.xml
index 92ea1bf..0587c16 100644
--- a/core/res/res/values/donottranslate-cldr.xml
+++ b/core/res/res/values/donottranslate-cldr.xml
@@ -57,5 +57,4 @@
<string name="full_wday_month_day_no_year">EEEE, MMMM d</string>
<string name="abbrev_wday_month_day_no_year">EEE, MMMM d</string>
<string name="abbrev_wday_month_day_year">EEE, MMM d, yyyy</string>
- <string name="keyguard_wday_day_month">EEE <b>d</b> MMM</string>
</resources>
diff --git a/core/res/res/values/integers.xml b/core/res/res/values/integers.xml
index 6d49a91..4b79d1f 100644
--- a/core/res/res/values/integers.xml
+++ b/core/res/res/values/integers.xml
@@ -19,4 +19,8 @@
<resources>
<integer name="kg_security_flip_duration">75</integer>
<integer name="kg_security_fade_duration">75</integer>
+
+ <!-- Gravity to make KeyguardSelectorView work in multiple orientations
+ 0x31 == "top|center_horizontal" -->
+ <integer name="kg_selector_gravity">0x31</integer>
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 6f37d8e..02aa537 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -744,6 +744,13 @@
the entire window content and examine all its text except passwords.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_temporary_enable_accessibility">temporary enable accessibility</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_temporary_enable_accessibility">Allows an application to temporarily
+ enable accessibility on the device. Malicious apps may enable accessibility without
+ user consent.</string>
+
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_retrieve_window_info">retrieve window info</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permdesc_retrieve_window_info">Allows an application to retrieve
@@ -3902,6 +3909,14 @@
"Raise volume above safe level?\nListening at high volume for long periods may damage your hearing."
</string>
- <string name="kg_temp_back_string"> &lt; </string> <!-- TODO: remove this -->
+
+ <!-- Text spoken when the user is performing a gesture that will enable accessibility. [CHAR LIMIT=none] -->
+ <string name="continue_to_enable_accessibility">Continue touching the screen to enable accessibility.</string>
+ <!-- Text spoken when the user enabled accessibility. [CHAR LIMIT=none] -->
+ <string name="accessibility_enabled">Accessibility enabled.</string>
+ <!-- Text spoken when the user stops preforming a gesture that would enable accessibility. [CHAR LIMIT=none] -->
+ <string name="enable_accessibility_canceled">Enable accessibility canceled.</string>
+ <!-- Text spoken when the current user is switched if accessibility is enabled. [CHAR LIMIT=none] -->
+ <string name="user_switched">Switched to user <xliff:g id="name" example="Bob">%1$s</xliff:g>.</string>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 3936ed4..9a4136b 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -290,6 +290,7 @@
<java-symbol type="color" name="tab_indicator_text_v4" />
+ <java-symbol type="dimen" name="accessibility_touch_slop" />
<java-symbol type="dimen" name="config_prefDialogWidth" />
<java-symbol type="dimen" name="config_viewConfigurationTouchSlop" />
<java-symbol type="dimen" name="default_app_widget_padding_bottom" />
@@ -357,6 +358,7 @@
<java-symbol type="string" name="abbrev_month_day_year" />
<java-symbol type="string" name="abbrev_month_year" />
<java-symbol type="string" name="accept" />
+ <java-symbol type="string" name="accessibility_enabled" />
<java-symbol type="string" name="activity_chooser_view_see_all" />
<java-symbol type="string" name="activitychooserview_choose_application" />
<java-symbol type="string" name="alternate_eri_file" />
@@ -437,6 +439,7 @@
<java-symbol type="string" name="contentServiceSync" />
<java-symbol type="string" name="contentServiceSyncNotificationTitle" />
<java-symbol type="string" name="contentServiceTooManyDeletesNotificationDesc" />
+ <java-symbol type="string" name="continue_to_enable_accessibility" />
<java-symbol type="string" name="date1_date2" />
<java-symbol type="string" name="date1_time1_date2_time2" />
<java-symbol type="string" name="date_and_time" />
@@ -470,6 +473,7 @@
<java-symbol type="string" name="emailTypeWork" />
<java-symbol type="string" name="emergency_call_dialog_number_for_display" />
<java-symbol type="string" name="emergency_calls_only" />
+ <java-symbol type="string" name="enable_accessibility_canceled" />
<java-symbol type="string" name="eventTypeAnniversary" />
<java-symbol type="string" name="eventTypeBirthday" />
<java-symbol type="string" name="eventTypeCustom" />
@@ -778,6 +782,7 @@
<java-symbol type="string" name="twelve_hour_time_format" />
<java-symbol type="string" name="twenty_four_hour_time_format" />
<java-symbol type="string" name="upload_file" />
+ <java-symbol type="string" name="user_switched" />
<java-symbol type="string" name="volume_alarm" />
<java-symbol type="string" name="volume_icon_description_bluetooth" />
<java-symbol type="string" name="volume_icon_description_incall" />
@@ -957,6 +962,7 @@
<java-symbol type="drawable" name="ic_lockscreen_silent" />
<java-symbol type="drawable" name="ic_lockscreen_unlock" />
<java-symbol type="drawable" name="ic_action_assist_generic" />
+ <java-symbol type="drawable" name="ic_lockscreen_alarm" />
<java-symbol type="drawable" name="notification_bg" />
<java-symbol type="drawable" name="notification_bg_low" />
<java-symbol type="drawable" name="notification_template_icon_bg" />
@@ -1079,6 +1085,7 @@
<java-symbol type="xml" name="password_kbd_qwerty_shifted" />
<java-symbol type="xml" name="password_kbd_symbols" />
<java-symbol type="xml" name="password_kbd_symbols_shift" />
+ <java-symbol type="xml" name="kg_password_kbd_numeric" />
<java-symbol type="xml" name="power_profile" />
<java-symbol type="xml" name="time_zones_by_country" />
<java-symbol type="xml" name="sms_short_codes" />
@@ -1362,7 +1369,6 @@
<java-symbol type="string" name="lockscreen_too_many_failed_pin_attempts_dialog_message" />
<java-symbol type="string" name="lockscreen_unlock_label" />
<java-symbol type="string" name="status_bar_device_locked" />
- <java-symbol type="string" name="keyguard_wday_day_month" />
<java-symbol type="style" name="Animation.LockScreen" />
<java-symbol type="style" name="Theme.Dialog.RecentApplications" />
<java-symbol type="style" name="Theme.ExpandedMenu" />
diff --git a/core/res/res/xml/kg_password_kbd_numeric.xml b/core/res/res/xml/kg_password_kbd_numeric.xml
new file mode 100755
index 0000000..93b32af
--- /dev/null
+++ b/core/res/res/xml/kg_password_kbd_numeric.xml
@@ -0,0 +1,59 @@
+<?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.
+*/
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+ android:keyWidth="33.33%p"
+ android:horizontalGap="@dimen/kg_key_horizontal_gap"
+ android:verticalGap="@dimen/kg_key_vertical_gap"
+ android:keyHeight="@dimen/kg_pin_key_height">
+
+ <Row android:rowEdgeFlags="top">
+ <Key android:codes="49" android:keyIcon="@*android:drawable/sym_keyboard_num1"
+ android:keyEdgeFlags="left"/>
+ <Key android:codes="50" android:keyIcon="@*android:drawable/sym_keyboard_num2"/>
+ <Key android:codes="51" android:keyIcon="@*android:drawable/sym_keyboard_num3"
+ android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row>
+ <Key android:codes="52" android:keyIcon="@*android:drawable/sym_keyboard_num4"
+ android:keyEdgeFlags="left"/>
+ <Key android:codes="53" android:keyIcon="@*android:drawable/sym_keyboard_num5"/>
+ <Key android:codes="54" android:keyIcon="@*android:drawable/sym_keyboard_num6"
+ android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row>
+ <Key android:codes="55" android:keyIcon="@*android:drawable/sym_keyboard_num7"
+ android:keyEdgeFlags="left"/>
+ <Key android:codes="56" android:keyIcon="@*android:drawable/sym_keyboard_num8"/>
+ <Key android:codes="57" android:keyIcon="@*android:drawable/sym_keyboard_num9"
+ android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:rowEdgeFlags="bottom">
+ <Key android:codes="48" android:keyIcon="@*android:drawable/sym_keyboard_num0_no_plus"
+ android:keyWidth="33.33%p"
+ android:keyEdgeFlags="left"/>
+ <Key android:codes="10" android:keyIcon="@*android:drawable/sym_keyboard_enter"
+ android:keyWidth="66.67%p"
+ android:keyEdgeFlags="right"/>
+ </Row>
+
+</Keyboard>
diff --git a/core/res/res/xml/password_kbd_numeric.xml b/core/res/res/xml/password_kbd_numeric.xml
index 560f867..7593ad8 100755
--- a/core/res/res/xml/password_kbd_numeric.xml
+++ b/core/res/res/xml/password_kbd_numeric.xml
@@ -51,7 +51,7 @@
<Row android:rowEdgeFlags="bottom">
<Key android:codes="48" android:keyIcon="@drawable/sym_keyboard_num0_no_plus"
android:keyWidth="66.66%p" android:keyEdgeFlags="left"/>
- <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_ok"
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_enter"
android:keyEdgeFlags="right"/>
</Row>
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 5881aa1..56070ee 100755
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -1668,16 +1668,16 @@ public class PackageManagerTests extends AndroidTestCase {
private int getDefaultInstallLoc() {
int origDefaultLoc = PackageInfo.INSTALL_LOCATION_AUTO;
try {
- origDefaultLoc = Settings.System.getInt(mContext.getContentResolver(),
- Settings.Secure.DEFAULT_INSTALL_LOCATION);
+ origDefaultLoc = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEFAULT_INSTALL_LOCATION);
} catch (SettingNotFoundException e1) {
}
return origDefaultLoc;
}
private void setInstallLoc(int loc) {
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.Secure.DEFAULT_INSTALL_LOCATION, loc);
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.DEFAULT_INSTALL_LOCATION, loc);
}
/*
@@ -2555,16 +2555,16 @@ public class PackageManagerTests extends AndroidTestCase {
*/
private boolean getUserSettingSetInstallLocation() {
try {
- return Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.SET_INSTALL_LOCATION) != 0;
-
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.SET_INSTALL_LOCATION) != 0;
} catch (SettingNotFoundException e1) {
}
return false;
}
private void setUserSettingSetInstallLocation(boolean value) {
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.Secure.SET_INSTALL_LOCATION, value ? 1 : 0);
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.SET_INSTALL_LOCATION, value ? 1 : 0);
}
private void setUserX(boolean enable, int userSetting, int iloc) throws Exception {
diff --git a/data/fonts/AndroidClock.ttf b/data/fonts/AndroidClock.ttf
index 3fa6d88..4781ccd 100644
--- a/data/fonts/AndroidClock.ttf
+++ b/data/fonts/AndroidClock.ttf
Binary files differ
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index f0f72f9..e443294 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -68,6 +68,7 @@ void Caches::init() {
mCurrentBuffer = meshBuffer;
mCurrentIndicesBuffer = 0;
mCurrentPositionPointer = this;
+ mCurrentPositionStride = 0;
mCurrentTexCoordsPointer = this;
mTexCoordsArrayEnabled = false;
@@ -86,6 +87,8 @@ void Caches::init() {
lastDstMode = GL_ZERO;
currentProgram = NULL;
+ mFunctorsCount = 0;
+
mInitialized = true;
}
@@ -340,15 +343,18 @@ bool Caches::unbindIndicesBuffer() {
// Meshes and textures
///////////////////////////////////////////////////////////////////////////////
-void Caches::bindPositionVertexPointer(bool force, GLuint slot, GLvoid* vertices, GLsizei stride) {
- if (force || vertices != mCurrentPositionPointer) {
+void Caches::bindPositionVertexPointer(bool force, GLvoid* vertices, GLsizei stride) {
+ if (force || vertices != mCurrentPositionPointer || stride != mCurrentPositionStride) {
+ GLuint slot = currentProgram->position;
glVertexAttribPointer(slot, 2, GL_FLOAT, GL_FALSE, stride, vertices);
mCurrentPositionPointer = vertices;
+ mCurrentPositionStride = stride;
}
}
-void Caches::bindTexCoordsVertexPointer(bool force, GLuint slot, GLvoid* vertices) {
+void Caches::bindTexCoordsVertexPointer(bool force, GLvoid* vertices) {
if (force || vertices != mCurrentTexCoordsPointer) {
+ GLuint slot = currentProgram->texCoords;
glVertexAttribPointer(slot, 2, GL_FLOAT, GL_FALSE, gMeshStride, vertices);
mCurrentTexCoordsPointer = vertices;
}
@@ -454,6 +460,22 @@ void Caches::endTiling() {
}
}
+bool Caches::hasRegisteredFunctors() {
+ return mFunctorsCount > 0;
+}
+
+void Caches::registerFunctors(uint32_t functorCount) {
+ mFunctorsCount += functorCount;
+}
+
+void Caches::unregisterFunctors(uint32_t functorCount) {
+ if (functorCount > mFunctorsCount) {
+ mFunctorsCount = 0;
+ } else {
+ mFunctorsCount -= functorCount;
+ }
+}
+
///////////////////////////////////////////////////////////////////////////////
// Regions
///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 48efd10..ad1ff6f 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -173,14 +173,13 @@ public:
* Binds an attrib to the specified float vertex pointer.
* Assumes a stride of gMeshStride and a size of 2.
*/
- void bindPositionVertexPointer(bool force, GLuint slot, GLvoid* vertices,
- GLsizei stride = gMeshStride);
+ void bindPositionVertexPointer(bool force, GLvoid* vertices, GLsizei stride = gMeshStride);
/**
* Binds an attrib to the specified float vertex pointer.
* Assumes a stride of gMeshStride and a size of 2.
*/
- void bindTexCoordsVertexPointer(bool force, GLuint slot, GLvoid* vertices);
+ void bindTexCoordsVertexPointer(bool force, GLvoid* vertices);
/**
* Resets the vertex pointers.
@@ -227,6 +226,10 @@ public:
void dumpMemoryUsage();
void dumpMemoryUsage(String8& log);
+ bool hasRegisteredFunctors();
+ void registerFunctors(uint32_t functorCount);
+ void unregisterFunctors(uint32_t functorCount);
+
bool blend;
GLenum lastSrcMode;
GLenum lastDstMode;
@@ -295,6 +298,7 @@ private:
GLuint mCurrentBuffer;
GLuint mCurrentIndicesBuffer;
void* mCurrentPositionPointer;
+ GLsizei mCurrentPositionStride;
void* mCurrentTexCoordsPointer;
bool mTexCoordsArrayEnabled;
@@ -316,6 +320,8 @@ private:
DebugLevel mDebugLevel;
bool mInitialized;
+
+ uint32_t mFunctorsCount;
}; // class Caches
}; // namespace uirenderer
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index cc72df6..6ca70a4 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -143,6 +143,7 @@ void DisplayList::destroyDisplayListDeferred(DisplayList* displayList) {
void DisplayList::clearResources() {
sk_free((void*) mReader.base());
+ mReader.setMemory(NULL, 0);
delete mTransformMatrix;
delete mTransformCamera;
@@ -157,6 +158,7 @@ void DisplayList::clearResources() {
mAnimationMatrix = NULL;
Caches& caches = Caches::getInstance();
+ caches.unregisterFunctors(mFunctorCount);
caches.resourceCache.lock();
for (size_t i = 0; i < mBitmapResources.size(); i++) {
@@ -215,24 +217,28 @@ void DisplayList::clearResources() {
void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorder, bool reusing) {
const SkWriter32& writer = recorder.writeStream();
- init();
-
- if (writer.size() == 0) {
- return;
- }
if (reusing) {
// re-using display list - clear out previous allocations
clearResources();
}
+
+ init();
initProperties();
+ if (writer.size() == 0) {
+ return;
+ }
+
mSize = writer.size();
void* buffer = sk_malloc_throw(mSize);
writer.flatten(buffer);
mReader.setMemory(buffer, mSize);
+ mFunctorCount = recorder.getFunctorCount();
+
Caches& caches = Caches::getInstance();
+ caches.registerFunctors(mFunctorCount);
caches.resourceCache.lock();
const Vector<SkBitmap*>& bitmapResources = recorder.getBitmapResources();
@@ -296,6 +302,7 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde
void DisplayList::init() {
mSize = 0;
mIsRenderable = true;
+ mFunctorCount = 0;
}
size_t DisplayList::getSize() {
@@ -1340,7 +1347,8 @@ status_t DisplayList::replay(OpenGLRenderer& renderer, Rect& dirty, int32_t flag
DisplayListRenderer::DisplayListRenderer():
mCaches(Caches::getInstance()), mWriter(MIN_WRITER_SIZE),
- mTranslateX(0.0f), mTranslateY(0.0f), mHasTranslate(false), mHasDrawOps(false) {
+ mTranslateX(0.0f), mTranslateY(0.0f), mHasTranslate(false),
+ mHasDrawOps(false), mFunctorCount(0) {
}
DisplayListRenderer::~DisplayListRenderer() {
@@ -1397,6 +1405,7 @@ void DisplayListRenderer::reset() {
mLayers.clear();
mHasDrawOps = false;
+ mFunctorCount = 0;
}
///////////////////////////////////////////////////////////////////////////////
@@ -1453,6 +1462,7 @@ status_t DisplayListRenderer::callDrawGLFunction(Functor *functor, Rect& dirty)
// Ignore dirty during recording, it matters only when we replay
addOp(DisplayList::DrawGLFunction);
addInt((int) functor);
+ mFunctorCount++;
return DrawGlInfo::kStatusDone; // No invalidate needed at record-time
}
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index a0b1630..39061f4 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -503,6 +503,7 @@ private:
size_t mSize;
bool mIsRenderable;
+ uint32_t mFunctorCount;
String8 mName;
@@ -661,6 +662,10 @@ public:
return mMatrices;
}
+ uint32_t getFunctorCount() const {
+ return mFunctorCount;
+ }
+
private:
void insertRestoreToCount() {
if (mRestoreSaveCount >= 0) {
@@ -887,6 +892,8 @@ private:
bool mHasTranslate;
bool mHasDrawOps;
+ uint32_t mFunctorCount;
+
friend class DisplayList;
}; // class DisplayListRenderer
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index cab68f0..4e97c88 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -374,9 +374,8 @@ void FontRenderer::issueDrawCommand() {
int offset = 2;
bool force = caches.unbindMeshBuffer();
- caches.bindPositionVertexPointer(force, caches.currentProgram->position, buffer);
- caches.bindTexCoordsVertexPointer(force, caches.currentProgram->texCoords,
- buffer + offset);
+ caches.bindPositionVertexPointer(force, buffer);
+ caches.bindTexCoordsVertexPointer(force, buffer + offset);
}
glDrawElements(GL_TRIANGLES, mCurrentQuadIndex * 6, GL_UNSIGNED_SHORT, NULL);
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 87c3a47..684d5e1 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -193,6 +193,11 @@ int OpenGLRenderer::prepareDirty(float left, float top, float right, float botto
syncState();
+ // Functors break the tiling extension in pretty spectacular ways
+ // This ensures we don't use tiling when a functor is going to be
+ // invoked during the frame
+ mSuppressTiling = mCaches.hasRegisteredFunctors();
+
mTilingSnapshot = mSnapshot;
startTiling(mTilingSnapshot, true);
@@ -221,17 +226,19 @@ void OpenGLRenderer::syncState() {
}
void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
- Rect* clip = mTilingSnapshot->clipRect;
- if (s->flags & Snapshot::kFlagIsFboLayer) {
- clip = s->clipRect;
- }
+ if (!mSuppressTiling) {
+ Rect* clip = mTilingSnapshot->clipRect;
+ if (s->flags & Snapshot::kFlagIsFboLayer) {
+ clip = s->clipRect;
+ }
- mCaches.startTiling(clip->left, s->height - clip->bottom,
- clip->right - clip->left, clip->bottom - clip->top, opaque);
+ mCaches.startTiling(clip->left, s->height - clip->bottom,
+ clip->right - clip->left, clip->bottom - clip->top, opaque);
+ }
}
void OpenGLRenderer::endTiling() {
- mCaches.endTiling();
+ if (!mSuppressTiling) mCaches.endTiling();
}
void OpenGLRenderer::finish() {
@@ -1248,6 +1255,15 @@ bool OpenGLRenderer::quickRejectNoScissor(float left, float top, float right, fl
return !clip.intersects(transformed);
}
+bool OpenGLRenderer::quickRejectPreStroke(float left, float top, float right, float bottom, SkPaint* paint) {
+ if (paint->getStyle() != SkPaint::kFill_Style) {
+ float outset = paint->getStrokeWidth() * 0.5f;
+ return quickReject(left - outset, top - outset, right + outset, bottom + outset);
+ } else {
+ return quickReject(left, top, right, bottom);
+ }
+}
+
bool OpenGLRenderer::quickReject(float left, float top, float right, float bottom) {
if (mSnapshot->isIgnored()) {
return true;
@@ -1490,7 +1506,7 @@ void OpenGLRenderer::setupDrawTextGammaUniforms() {
void OpenGLRenderer::setupDrawSimpleMesh() {
bool force = mCaches.bindMeshBuffer();
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position, 0);
+ mCaches.bindPositionVertexPointer(force, 0);
mCaches.unbindIndicesBuffer();
}
@@ -1523,9 +1539,9 @@ void OpenGLRenderer::setupDrawMesh(GLvoid* vertices, GLvoid* texCoords, GLuint v
force = mCaches.unbindMeshBuffer();
}
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position, vertices);
+ mCaches.bindPositionVertexPointer(force, vertices);
if (mCaches.currentProgram->texCoords >= 0) {
- mCaches.bindTexCoordsVertexPointer(force, mCaches.currentProgram->texCoords, texCoords);
+ mCaches.bindTexCoordsVertexPointer(force, texCoords);
}
mCaches.unbindIndicesBuffer();
@@ -1533,16 +1549,15 @@ void OpenGLRenderer::setupDrawMesh(GLvoid* vertices, GLvoid* texCoords, GLuint v
void OpenGLRenderer::setupDrawMeshIndices(GLvoid* vertices, GLvoid* texCoords) {
bool force = mCaches.unbindMeshBuffer();
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position, vertices);
+ mCaches.bindPositionVertexPointer(force, vertices);
if (mCaches.currentProgram->texCoords >= 0) {
- mCaches.bindTexCoordsVertexPointer(force, mCaches.currentProgram->texCoords, texCoords);
+ mCaches.bindTexCoordsVertexPointer(force, texCoords);
}
}
void OpenGLRenderer::setupDrawVertices(GLvoid* vertices) {
bool force = mCaches.unbindMeshBuffer();
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position,
- vertices, gVertexStride);
+ mCaches.bindPositionVertexPointer(force, vertices, gVertexStride);
mCaches.unbindIndicesBuffer();
}
@@ -1560,8 +1575,7 @@ void OpenGLRenderer::setupDrawVertices(GLvoid* vertices) {
void OpenGLRenderer::setupDrawAALine(GLvoid* vertices, GLvoid* widthCoords,
GLvoid* lengthCoords, float boundaryWidthProportion, int& widthSlot, int& lengthSlot) {
bool force = mCaches.unbindMeshBuffer();
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position,
- vertices, gAAVertexStride);
+ mCaches.bindPositionVertexPointer(force, vertices, gAAVertexStride);
mCaches.resetTexCoordsVertexPointer();
mCaches.unbindIndicesBuffer();
@@ -1919,15 +1933,23 @@ status_t OpenGLRenderer::drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const
}
/**
- * This function uses a similar approach to that of AA lines in the drawLines() function.
- * We expand the rectangle by a half pixel in screen space on all sides. However, instead of using
- * a fragment shader to compute the translucency of the color from its position, we simply use a
- * varying parameter to define how far a given pixel is into the region.
+ * Renders a convex path via tessellation. For AA paths, this function uses a similar approach to
+ * that of AA lines in the drawLines() function. We expand the convex path by a half pixel in
+ * screen space in all directions. However, instead of using a fragment shader to compute the
+ * translucency of the color from its position, we simply use a varying parameter to define how far
+ * a given pixel is from the edge. For non-AA paths, the expansion and alpha varying are not used.
+ *
+ * Doesn't yet support joins, caps, or path effects.
*/
-void OpenGLRenderer::drawConvexPath(const SkPath& path, int color, SkXfermode::Mode mode, bool isAA) {
+void OpenGLRenderer::drawConvexPath(const SkPath& path, SkPaint* paint) {
+ int color = paint->getColor();
+ SkPaint::Style style = paint->getStyle();
+ SkXfermode::Mode mode = getXfermode(paint->getXfermode());
+ bool isAA = paint->isAntiAlias();
+
VertexBuffer vertexBuffer;
// TODO: try clipping large paths to viewport
- PathRenderer::convexPathFillVertices(path, mSnapshot->transform, vertexBuffer, isAA);
+ PathRenderer::convexPathVertices(path, paint, mSnapshot->transform, vertexBuffer);
setupDraw();
setupDrawNoTexture();
@@ -1938,15 +1960,14 @@ void OpenGLRenderer::drawConvexPath(const SkPath& path, int color, SkXfermode::M
setupDrawShader();
setupDrawBlending(isAA, mode);
setupDrawProgram();
- setupDrawModelViewIdentity(true);
+ setupDrawModelViewIdentity();
setupDrawColorUniforms();
setupDrawColorFilterUniforms();
setupDrawShaderIdentityUniforms();
void* vertices = vertexBuffer.getBuffer();
bool force = mCaches.unbindMeshBuffer();
- mCaches.bindPositionVertexPointer(force, mCaches.currentProgram->position,
- vertices, isAA ? gAlphaVertexStride : gVertexStride);
+ mCaches.bindPositionVertexPointer(true, vertices, isAA ? gAlphaVertexStride : gVertexStride);
mCaches.resetTexCoordsVertexPointer();
mCaches.unbindIndicesBuffer();
@@ -1960,7 +1981,7 @@ void OpenGLRenderer::drawConvexPath(const SkPath& path, int color, SkXfermode::M
glVertexAttribPointer(alphaSlot, 1, GL_FLOAT, GL_FALSE, gAlphaVertexStride, alphaCoords);
}
- SkRect bounds = path.getBounds();
+ SkRect bounds = PathRenderer::computePathBounds(path, paint);
dirtyLayer(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, *mSnapshot->transform);
glDrawArrays(GL_TRIANGLE_STRIP, 0, vertexBuffer.getSize());
@@ -2050,7 +2071,7 @@ status_t OpenGLRenderer::drawLines(float* points, int count, SkPaint* paint) {
setupDrawShader();
setupDrawBlending(isAA, mode);
setupDrawProgram();
- setupDrawModelViewIdentity(true);
+ setupDrawModelViewIdentity();
setupDrawColorUniforms();
setupDrawColorFilterUniforms();
setupDrawShaderIdentityUniforms();
@@ -2330,11 +2351,11 @@ status_t OpenGLRenderer::drawShape(float left, float top, const PathTexture* tex
status_t OpenGLRenderer::drawRoundRect(float left, float top, float right, float bottom,
float rx, float ry, SkPaint* p) {
- if (mSnapshot->isIgnored() || quickReject(left, top, right, bottom)) {
+ if (mSnapshot->isIgnored() || quickRejectPreStroke(left, top, right, bottom, p)) {
return DrawGlInfo::kStatusDone;
}
- if (p->getStyle() != SkPaint::kFill_Style) {
+ if (p->getPathEffect() != 0) {
mCaches.activeTexture(0);
const PathTexture* texture = mCaches.roundRectShapeCache.getRoundRect(
right - left, bottom - top, rx, ry, p);
@@ -2343,37 +2364,47 @@ status_t OpenGLRenderer::drawRoundRect(float left, float top, float right, float
SkPath path;
SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
+ if (p->getStyle() == SkPaint::kStrokeAndFill_Style) {
+ float outset = p->getStrokeWidth() / 2;
+ rect.outset(outset, outset);
+ rx += outset;
+ ry += outset;
+ }
path.addRoundRect(rect, rx, ry);
- drawConvexPath(path, p->getColor(), getXfermode(p->getXfermode()), p->isAntiAlias());
+ drawConvexPath(path, p);
return DrawGlInfo::kStatusDrew;
}
status_t OpenGLRenderer::drawCircle(float x, float y, float radius, SkPaint* p) {
- if (mSnapshot->isIgnored() || quickReject(x - radius, y - radius, x + radius, y + radius)) {
+ if (mSnapshot->isIgnored() || quickRejectPreStroke(x - radius, y - radius,
+ x + radius, y + radius, p)) {
return DrawGlInfo::kStatusDone;
}
-
- if (p->getStyle() != SkPaint::kFill_Style) {
+ if (p->getPathEffect() != 0) {
mCaches.activeTexture(0);
const PathTexture* texture = mCaches.circleShapeCache.getCircle(radius, p);
return drawShape(x - radius, y - radius, texture, p);
}
SkPath path;
- path.addCircle(x, y, radius);
- drawConvexPath(path, p->getColor(), getXfermode(p->getXfermode()), p->isAntiAlias());
+ if (p->getStyle() == SkPaint::kStrokeAndFill_Style) {
+ path.addCircle(x, y, radius + p->getStrokeWidth() / 2);
+ } else {
+ path.addCircle(x, y, radius);
+ }
+ drawConvexPath(path, p);
return DrawGlInfo::kStatusDrew;
}
status_t OpenGLRenderer::drawOval(float left, float top, float right, float bottom,
SkPaint* p) {
- if (mSnapshot->isIgnored() || quickReject(left, top, right, bottom)) {
+ if (mSnapshot->isIgnored() || quickRejectPreStroke(left, top, right, bottom, p)) {
return DrawGlInfo::kStatusDone;
}
- if (p->getStyle() != SkPaint::kFill_Style) {
+ if (p->getPathEffect() != 0) {
mCaches.activeTexture(0);
const PathTexture* texture = mCaches.ovalShapeCache.getOval(right - left, bottom - top, p);
return drawShape(left, top, texture, p);
@@ -2381,8 +2412,11 @@ status_t OpenGLRenderer::drawOval(float left, float top, float right, float bott
SkPath path;
SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
+ if (p->getStyle() == SkPaint::kStrokeAndFill_Style) {
+ rect.outset(p->getStrokeWidth() / 2, p->getStrokeWidth() / 2);
+ }
path.addOval(rect);
- drawConvexPath(path, p->getColor(), getXfermode(p->getXfermode()), p->isAntiAlias());
+ drawConvexPath(path, p);
return DrawGlInfo::kStatusDrew;
}
@@ -2402,10 +2436,11 @@ status_t OpenGLRenderer::drawArc(float left, float top, float right, float botto
}
status_t OpenGLRenderer::drawRect(float left, float top, float right, float bottom, SkPaint* p) {
- if (mSnapshot->isIgnored() || quickReject(left, top, right, bottom)) {
+ if (mSnapshot->isIgnored() || quickRejectPreStroke(left, top, right, bottom, p)) {
return DrawGlInfo::kStatusDone;
}
+ // only fill style is supported by drawConvexPath, since others have to handle joins
if (p->getStyle() != SkPaint::kFill_Style) {
mCaches.activeTexture(0);
const PathTexture* texture = mCaches.rectShapeCache.getRect(right - left, bottom - top, p);
@@ -2415,7 +2450,7 @@ status_t OpenGLRenderer::drawRect(float left, float top, float right, float bott
if (p->isAntiAlias() && !mSnapshot->transform->isSimple()) {
SkPath path;
path.addRect(left, top, right, bottom);
- drawConvexPath(path, p->getColor(), getXfermode(p->getXfermode()), true);
+ drawConvexPath(path, p);
} else {
drawColorRect(left, top, right, bottom, p->getColor(), getXfermode(p->getXfermode()));
}
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index c29e3fb..a40d69a 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -407,6 +407,11 @@ private:
Rect& transformed, Rect& clip);
/**
+ * Performs a quick reject but adjust the bounds to account for stroke width if necessary
+ */
+ bool quickRejectPreStroke(float left, float top, float right, float bottom, SkPaint* paint);
+
+ /**
* Creates a new layer stored in the specified snapshot.
*
* @param snapshot The snapshot associated with the new layer
@@ -513,11 +518,9 @@ private:
* Renders the convex hull defined by the specified path as a strip of polygons.
*
* @param path The hull of the path to draw
- * @param color The color of the rect
- * @param mode The blending mode to draw the path
- * @param isAA True if the drawing should be anti-aliased
+ * @param paint The paint to render with
*/
- void drawConvexPath(const SkPath& path, int color, SkXfermode::Mode mode, bool isAA);
+ void drawConvexPath(const SkPath& path, SkPaint* paint);
/**
* Draws a textured rectangle with the specified texture. The specified coordinates
@@ -814,6 +817,9 @@ private:
// Properties.h
bool mScissorOptimizationDisabled;
+ // No-ops start/endTiling when set
+ bool mSuppressTiling;
+
friend class DisplayListRenderer;
}; // class OpenGLRenderer
diff --git a/libs/hwui/PathRenderer.cpp b/libs/hwui/PathRenderer.cpp
index d222009..4a66c62 100644
--- a/libs/hwui/PathRenderer.cpp
+++ b/libs/hwui/PathRenderer.cpp
@@ -21,6 +21,7 @@
#define VERTEX_DEBUG 0
#include <SkPath.h>
+#include <SkPaint.h>
#include <stdlib.h>
#include <stdint.h>
@@ -39,10 +40,16 @@ namespace uirenderer {
#define THRESHOLD 0.5f
-void PathRenderer::computeInverseScales(const mat4 *transform,
- float &inverseScaleX, float& inverseScaleY) {
- inverseScaleX = 1.0f;
- inverseScaleY = 1.0f;
+SkRect PathRenderer::computePathBounds(const SkPath& path, const SkPaint* paint) {
+ SkRect bounds = path.getBounds();
+ if (paint->getStyle() != SkPaint::kFill_Style) {
+ float outset = paint->getStrokeWidth() * 0.5f;
+ bounds.outset(outset, outset);
+ }
+ return bounds;
+}
+
+void computeInverseScales(const mat4 *transform, float &inverseScaleX, float& inverseScaleY) {
if (CC_UNLIKELY(!transform->isPureTranslate())) {
float m00 = transform->data[Matrix4::kScaleX];
float m01 = transform->data[Matrix4::kSkewY];
@@ -50,127 +57,300 @@ void PathRenderer::computeInverseScales(const mat4 *transform,
float m11 = transform->data[Matrix4::kScaleY];
float scaleX = sqrt(m00 * m00 + m01 * m01);
float scaleY = sqrt(m10 * m10 + m11 * m11);
- inverseScaleX = (scaleX != 0) ? (inverseScaleX / scaleX) : 0;
- inverseScaleY = (scaleY != 0) ? (inverseScaleY / scaleY) : 0;
+ inverseScaleX = (scaleX != 0) ? (1.0f / scaleX) : 1.0f;
+ inverseScaleY = (scaleY != 0) ? (1.0f / scaleY) : 1.0f;
+ } else {
+ inverseScaleX = 1.0f;
+ inverseScaleY = 1.0f;
}
}
-void PathRenderer::convexPathFillVertices(const SkPath &path, const mat4 *transform,
- VertexBuffer &vertexBuffer, bool isAA) {
- ATRACE_CALL();
- float inverseScaleX;
- float inverseScaleY;
- computeInverseScales(transform, inverseScaleX, inverseScaleY);
+inline void copyVertex(Vertex* destPtr, const Vertex* srcPtr) {
+ Vertex::set(destPtr, srcPtr->position[0], srcPtr->position[1]);
+}
- Vector<Vertex> tempVertices;
- float thresholdx = THRESHOLD * inverseScaleX;
- float thresholdy = THRESHOLD * inverseScaleY;
- convexPathVertices(path,
- thresholdx * thresholdx,
- thresholdy * thresholdy,
- tempVertices);
+inline void copyAlphaVertex(AlphaVertex* destPtr, const AlphaVertex* srcPtr) {
+ AlphaVertex::set(destPtr, srcPtr->position[0], srcPtr->position[1], srcPtr->alpha);
+}
-#if VERTEX_DEBUG
- for (unsigned int i = 0; i < tempVertices.size(); i++) {
- ALOGD("orig path: point at %f %f",
- tempVertices[i].position[0],
- tempVertices[i].position[1]);
+/**
+ * Produces a pseudo-normal for a vertex, given the normals of the two incoming lines. If the offset
+ * from each vertex in a perimeter is calculated, the resultant lines connecting the offset vertices
+ * will be offset by 1.0
+ *
+ * Note that we can't add and normalize the two vectors, that would result in a rectangle having an
+ * offset of (sqrt(2)/2, sqrt(2)/2) at each corner, instead of (1, 1)
+ */
+inline vec2 totalOffsetFromNormals(const vec2& normalA, const vec2& normalB) {
+ return (normalA + normalB) / (1 + fabs(normalA.dot(normalB)));
+}
+
+void getFillVerticesFromPerimeter(const Vector<Vertex>& perimeter, VertexBuffer& vertexBuffer) {
+ Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size());
+
+ int currentIndex = 0;
+ // zig zag between all previous points on the inside of the hull to create a
+ // triangle strip that fills the hull
+ int srcAindex = 0;
+ int srcBindex = perimeter.size() - 1;
+ while (srcAindex <= srcBindex) {
+ copyVertex(&buffer[currentIndex++], &perimeter[srcAindex]);
+ if (srcAindex == srcBindex) break;
+ copyVertex(&buffer[currentIndex++], &perimeter[srcBindex]);
+ srcAindex++;
+ srcBindex--;
}
-#endif
+}
+
+void getStrokeVerticesFromPerimeter(const Vector<Vertex>& perimeter, float halfStrokeWidth,
+ VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size() * 2 + 2);
+
int currentIndex = 0;
- if (!isAA) {
- Vertex* buffer = vertexBuffer.alloc<Vertex>(tempVertices.size());
-
- // zig zag between all previous points on the inside of the hull to create a
- // triangle strip that fills the hull
- int srcAindex = 0;
- int srcBindex = tempVertices.size() - 1;
- while (srcAindex <= srcBindex) {
- Vertex::set(&buffer[currentIndex++],
- tempVertices.editArray()[srcAindex].position[0],
- tempVertices.editArray()[srcAindex].position[1]);
- if (srcAindex == srcBindex) break;
- Vertex::set(&buffer[currentIndex++],
- tempVertices.editArray()[srcBindex].position[0],
- tempVertices.editArray()[srcBindex].position[1]);
- srcAindex++;
- srcBindex--;
+ const Vertex* last = &(perimeter[perimeter.size() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ vec2 lastNormal(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (unsigned int i = 0; i < perimeter.size(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
+ vec2 nextNormal(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ if (halfStrokeWidth == 0.0f) {
+ // hairline - compensate for scale
+ totalOffset.x *= 0.5f * inverseScaleX;
+ totalOffset.y *= 0.5f * inverseScaleY;
+ } else {
+ totalOffset *= halfStrokeWidth;
}
- return;
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] + totalOffset.x,
+ current->position[1] + totalOffset.y);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] - totalOffset.x,
+ current->position[1] - totalOffset.y);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
}
- AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(tempVertices.size() * 3 + 2);
- // generate alpha points - fill Alpha vertex gaps in between each point with
- // alpha 0 vertex, offset by a scaled normal.
- Vertex* last = &(tempVertices.editArray()[tempVertices.size()-1]);
+ // wrap around to beginning
+ copyVertex(&buffer[currentIndex++], &buffer[0]);
+ copyVertex(&buffer[currentIndex++], &buffer[1]);
+}
- for (unsigned int i = 0; i<tempVertices.size(); i++) {
- Vertex* current = &(tempVertices.editArray()[i]);
- Vertex* next = &(tempVertices.editArray()[i + 1 >= tempVertices.size() ? 0 : i + 1]);
+void getFillVerticesFromPerimeterAA(const Vector<Vertex>& perimeter, VertexBuffer& vertexBuffer,
+ float inverseScaleX, float inverseScaleY) {
+ AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(perimeter.size() * 3 + 2);
- vec2 lastNormal(current->position[1] - last->position[1],
- last->position[0] - current->position[0]);
- lastNormal.normalize();
+ // generate alpha points - fill Alpha vertex gaps in between each point with
+ // alpha 0 vertex, offset by a scaled normal.
+ int currentIndex = 0;
+ const Vertex* last = &(perimeter[perimeter.size() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ vec2 lastNormal(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (unsigned int i = 0; i < perimeter.size(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
vec2 nextNormal(next->position[1] - current->position[1],
- current->position[0] - next->position[0]);
+ current->position[0] - next->position[0]);
nextNormal.normalize();
- // AA point offset from original point is that point's normal, such that
- // each side is offset by .5 pixels
- vec2 totalOffset = (lastNormal + nextNormal) / (2 * (1 + lastNormal.dot(nextNormal)));
- totalOffset.x *= inverseScaleX;
- totalOffset.y *= inverseScaleY;
+ // AA point offset from original point is that point's normal, such that each side is offset
+ // by .5 pixels
+ vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ totalOffset.x *= 0.5f * inverseScaleX;
+ totalOffset.y *= 0.5f * inverseScaleY;
AlphaVertex::set(&buffer[currentIndex++],
- current->position[0] + totalOffset.x,
- current->position[1] + totalOffset.y,
- 0.0f);
+ current->position[0] + totalOffset.x,
+ current->position[1] + totalOffset.y,
+ 0.0f);
AlphaVertex::set(&buffer[currentIndex++],
- current->position[0] - totalOffset.x,
- current->position[1] - totalOffset.y,
- 1.0f);
+ current->position[0] - totalOffset.x,
+ current->position[1] - totalOffset.y,
+ 1.0f);
+
last = current;
+ current = next;
+ lastNormal = nextNormal;
}
// wrap around to beginning
- AlphaVertex::set(&buffer[currentIndex++],
- buffer[0].position[0],
- buffer[0].position[1], 0.0f);
- AlphaVertex::set(&buffer[currentIndex++],
- buffer[1].position[0],
- buffer[1].position[1], 1.0f);
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[0]);
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[1]);
// zig zag between all previous points on the inside of the hull to create a
// triangle strip that fills the hull, repeating the first inner point to
// create degenerate tris to start inside path
int srcAindex = 0;
- int srcBindex = tempVertices.size() - 1;
+ int srcBindex = perimeter.size() - 1;
while (srcAindex <= srcBindex) {
- AlphaVertex::set(&buffer[currentIndex++],
- buffer[srcAindex * 2 + 1].position[0],
- buffer[srcAindex * 2 + 1].position[1],
- 1.0f);
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[srcAindex * 2 + 1]);
if (srcAindex == srcBindex) break;
- AlphaVertex::set(&buffer[currentIndex++],
- buffer[srcBindex * 2 + 1].position[0],
- buffer[srcBindex * 2 + 1].position[1],
- 1.0f);
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[srcBindex * 2 + 1]);
srcAindex++;
srcBindex--;
}
#if VERTEX_DEBUG
- for (unsigned int i = 0; i < vertexBuffer.mSize; i++) {
- ALOGD("point at %f %f",
- buffer[i].position[0],
- buffer[i].position[1]);
+ for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
+ ALOGD("point at %f %f", buffer[i].position[0], buffer[i].position[1]);
}
#endif
}
+void getStrokeVerticesFromPerimeterAA(const Vector<Vertex>& perimeter, float halfStrokeWidth,
+ VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(6 * perimeter.size() + 8);
+
+ // avoid lines smaller than hairline since they break triangle based sampling. instead reducing
+ // alpha value (TODO: support different X/Y scale)
+ float maxAlpha = 1.0f;
+ if (halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
+ halfStrokeWidth * inverseScaleX < 1.0f) {
+ maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
+ halfStrokeWidth = 0.0f;
+ }
+
+ int offset = 2 * perimeter.size() + 3;
+ int currentAAOuterIndex = 0;
+ int currentStrokeIndex = offset;
+ int currentAAInnerIndex = offset * 2;
+
+ const Vertex* last = &(perimeter[perimeter.size() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ vec2 lastNormal(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (unsigned int i = 0; i < perimeter.size(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
+ vec2 nextNormal(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ vec2 AAOffset = totalOffset;
+ AAOffset.x *= 0.5f * inverseScaleX;
+ AAOffset.y *= 0.5f * inverseScaleY;
+
+ vec2 innerOffset = totalOffset;
+ if (halfStrokeWidth == 0.0f) {
+ // hairline! - compensate for scale
+ innerOffset.x *= 0.5f * inverseScaleX;
+ innerOffset.y *= 0.5f * inverseScaleY;
+ } else {
+ innerOffset *= halfStrokeWidth;
+ }
+ vec2 outerOffset = innerOffset + AAOffset;
+ innerOffset -= AAOffset;
+
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + outerOffset.x,
+ current->position[1] + outerOffset.y,
+ 0.0f);
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + innerOffset.x,
+ current->position[1] + innerOffset.y,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] + innerOffset.x,
+ current->position[1] + innerOffset.y,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] - innerOffset.x,
+ current->position[1] - innerOffset.y,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentAAInnerIndex++],
+ current->position[0] - innerOffset.x,
+ current->position[1] - innerOffset.y,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentAAInnerIndex++],
+ current->position[0] - outerOffset.x,
+ current->position[1] - outerOffset.y,
+ 0.0f);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ // wrap each strip around to beginning, creating degenerate tris to bridge strips
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[0]);
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset]);
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
-void PathRenderer::convexPathVertices(const SkPath &path, float thresholdx, float thresholdy,
- Vector<Vertex> &outputVertices) {
+ copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset]);
+ copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset + 1]);
+ // don't need to create last degenerate tri
+}
+
+void PathRenderer::convexPathVertices(const SkPath &path, const SkPaint* paint,
+ const mat4 *transform, VertexBuffer& vertexBuffer) {
+ ATRACE_CALL();
+
+ SkPaint::Style style = paint->getStyle();
+ bool isAA = paint->isAntiAlias();
+
+ float inverseScaleX, inverseScaleY;
+ computeInverseScales(transform, inverseScaleX, inverseScaleY);
+
+ Vector<Vertex> tempVertices;
+ float threshInvScaleX = inverseScaleX;
+ float threshInvScaleY = inverseScaleY;
+ if (style == SkPaint::kStroke_Style) {
+ // alter the bezier recursion threshold values we calculate in order to compensate for
+ // expansion done after the path vertices are found
+ SkRect bounds = path.getBounds();
+ if (!bounds.isEmpty()) {
+ threshInvScaleX *= bounds.width() / (bounds.width() + paint->getStrokeWidth());
+ threshInvScaleY *= bounds.height() / (bounds.height() + paint->getStrokeWidth());
+ }
+ }
+ convexPathPerimeterVertices(path, threshInvScaleX * threshInvScaleX,
+ threshInvScaleY * threshInvScaleY, tempVertices);
+
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < tempVertices.size(); i++) {
+ ALOGD("orig path: point at %f %f", tempVertices[i].position[0], tempVertices[i].position[1]);
+ }
+#endif
+
+ if (style == SkPaint::kStroke_Style) {
+ float halfStrokeWidth = paint->getStrokeWidth() * 0.5f;
+ if (!isAA) {
+ getStrokeVerticesFromPerimeter(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ } else {
+ getStrokeVerticesFromPerimeterAA(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ }
+ } else {
+ // For kStrokeAndFill style, the path should be adjusted externally, as it will be treated as a fill here.
+ if (!isAA) {
+ getFillVerticesFromPerimeter(tempVertices, vertexBuffer);
+ } else {
+ getFillVerticesFromPerimeterAA(tempVertices, vertexBuffer, inverseScaleX, inverseScaleY);
+ }
+ }
+}
+
+
+void PathRenderer::convexPathPerimeterVertices(const SkPath& path,
+ float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
ATRACE_CALL();
SkPath::Iter iter(path, true);
@@ -189,31 +369,30 @@ void PathRenderer::convexPathVertices(const SkPath &path, float thresholdx, floa
break;
case SkPath::kLine_Verb:
ALOGV("kLine_Verb %f %f -> %f %f",
- pts[0].x(), pts[0].y(),
- pts[1].x(), pts[1].y());
+ pts[0].x(), pts[0].y(),
+ pts[1].x(), pts[1].y());
// TODO: make this not yuck
outputVertices.push();
- newVertex = &(outputVertices.editArray()[outputVertices.size()-1]);
+ newVertex = &(outputVertices.editArray()[outputVertices.size() - 1]);
Vertex::set(newVertex, pts[1].x(), pts[1].y());
break;
case SkPath::kQuad_Verb:
ALOGV("kQuad_Verb");
recursiveQuadraticBezierVertices(
- pts[0].x(), pts[0].y(),
- pts[2].x(), pts[2].y(),
- pts[1].x(), pts[1].y(),
- thresholdx, thresholdy,
- outputVertices);
+ pts[0].x(), pts[0].y(),
+ pts[2].x(), pts[2].y(),
+ pts[1].x(), pts[1].y(),
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
break;
case SkPath::kCubic_Verb:
ALOGV("kCubic_Verb");
recursiveCubicBezierVertices(
- pts[0].x(), pts[0].y(),
- pts[1].x(), pts[1].y(),
- pts[3].x(), pts[3].y(),
- pts[2].x(), pts[2].y(),
- thresholdx, thresholdy, outputVertices);
+ pts[0].x(), pts[0].y(),
+ pts[1].x(), pts[1].y(),
+ pts[3].x(), pts[3].y(),
+ pts[2].x(), pts[2].y(),
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
break;
default:
break;
@@ -224,18 +403,20 @@ void PathRenderer::convexPathVertices(const SkPath &path, float thresholdx, floa
void PathRenderer::recursiveCubicBezierVertices(
float p1x, float p1y, float c1x, float c1y,
float p2x, float p2y, float c2x, float c2y,
- float thresholdx, float thresholdy, Vector<Vertex> &outputVertices) {
+ float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
float dx = p2x - p1x;
float dy = p2y - p1y;
float d1 = fabs((c1x - p2x) * dy - (c1y - p2y) * dx);
float d2 = fabs((c2x - p2x) * dy - (c2y - p2y) * dx);
float d = d1 + d2;
- if (d * d < (thresholdx * (dx * dx) + thresholdy * (dy * dy))) {
+ // multiplying by sqrInvScaleY/X equivalent to multiplying in dimensional scale factors
+
+ if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
// below thresh, draw line by adding endpoint
// TODO: make this not yuck
outputVertices.push();
- Vertex* newVertex = &(outputVertices.editArray()[outputVertices.size()-1]);
+ Vertex* newVertex = &(outputVertices.editArray()[outputVertices.size() - 1]);
Vertex::set(newVertex, p2x, p2y);
} else {
float p1c1x = (p1x + c1x) * 0.5f;
@@ -258,13 +439,11 @@ void PathRenderer::recursiveCubicBezierVertices(
recursiveCubicBezierVertices(
p1x, p1y, p1c1x, p1c1y,
mx, my, p1c1c2x, p1c1c2y,
- thresholdx, thresholdy,
- outputVertices);
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
recursiveCubicBezierVertices(
mx, my, p2c1c2x, p2c1c2y,
p2x, p2y, p2c2x, p2c2y,
- thresholdx, thresholdy,
- outputVertices);
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
}
}
@@ -272,16 +451,16 @@ void PathRenderer::recursiveQuadraticBezierVertices(
float ax, float ay,
float bx, float by,
float cx, float cy,
- float thresholdx, float thresholdy, Vector<Vertex> &outputVertices) {
+ float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
float dx = bx - ax;
float dy = by - ay;
float d = (cx - bx) * dy - (cy - by) * dx;
- if (d * d < (thresholdx * (dx * dx) + thresholdy * (dy * dy))) {
+ if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
// below thresh, draw line by adding endpoint
// TODO: make this not yuck
outputVertices.push();
- Vertex* newVertex = &(outputVertices.editArray()[outputVertices.size()-1]);
+ Vertex* newVertex = &(outputVertices.editArray()[outputVertices.size() - 1]);
Vertex::set(newVertex, bx, by);
} else {
float acx = (ax + cx) * 0.5f;
@@ -294,9 +473,9 @@ void PathRenderer::recursiveQuadraticBezierVertices(
float my = (acy + bcy) * 0.5f;
recursiveQuadraticBezierVertices(ax, ay, mx, my, acx, acy,
- thresholdx, thresholdy, outputVertices);
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
recursiveQuadraticBezierVertices(mx, my, bx, by, bcx, bcy,
- thresholdx, thresholdy, outputVertices);
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
}
}
diff --git a/libs/hwui/PathRenderer.h b/libs/hwui/PathRenderer.h
index 1354f16..28a5b90 100644
--- a/libs/hwui/PathRenderer.h
+++ b/libs/hwui/PathRenderer.h
@@ -35,15 +35,13 @@ public:
mCleanupMethod(0)
{}
- ~VertexBuffer()
- {
+ ~VertexBuffer() {
if (mCleanupMethod)
mCleanupMethod(mBuffer);
}
template <class TYPE>
- TYPE* alloc(int size)
- {
+ TYPE* alloc(int size) {
mSize = size;
mBuffer = (void*)new TYPE[size];
mCleanupMethod = &(cleanup<TYPE>);
@@ -56,8 +54,7 @@ public:
private:
template <class TYPE>
- static void cleanup(void* buffer)
- {
+ static void cleanup(void* buffer) {
delete[] (TYPE*)buffer;
}
@@ -68,17 +65,15 @@ private:
class PathRenderer {
public:
- static void computeInverseScales(
- const mat4 *transform, float &inverseScaleX, float& inverseScaleY);
+ static SkRect computePathBounds(const SkPath& path, const SkPaint* paint);
- static void convexPathFillVertices(
- const SkPath &path, const mat4 *transform,
- VertexBuffer &vertexBuffer, bool isAA);
+ static void convexPathVertices(const SkPath& path, const SkPaint* paint,
+ const mat4 *transform, VertexBuffer& vertexBuffer);
private:
- static void convexPathVertices(
+ static void convexPathPerimeterVertices(
const SkPath &path,
- float thresholdx, float thresholdy,
+ float sqrInvScaleX, float sqrInvScaleY,
Vector<Vertex> &outputVertices);
/*
@@ -86,23 +81,23 @@ private:
control c
*/
static void recursiveQuadraticBezierVertices(
- float ax, float ay,
- float bx, float by,
- float cx, float cy,
- float thresholdx, float thresholdy,
- Vector<Vertex> &outputVertices);
+ float ax, float ay,
+ float bx, float by,
+ float cx, float cy,
+ float sqrInvScaleX, float sqrInvScaleY,
+ Vector<Vertex> &outputVertices);
/*
endpoints p1, p2
control c1, c2
*/
static void recursiveCubicBezierVertices(
- float p1x, float p1y,
- float c1x, float c1y,
- float p2x, float p2y,
- float c2x, float c2y,
- float thresholdx, float thresholdy,
- Vector<Vertex> &outputVertices);
+ float p1x, float p1y,
+ float c1x, float c1y,
+ float p2x, float p2y,
+ float c2x, float c2y,
+ float sqrInvScaleX, float sqrInvScaleY,
+ Vector<Vertex> &outputVertices);
};
}; // namespace uirenderer
diff --git a/libs/hwui/SkiaColorFilter.cpp b/libs/hwui/SkiaColorFilter.cpp
index f754388..df918be 100644
--- a/libs/hwui/SkiaColorFilter.cpp
+++ b/libs/hwui/SkiaColorFilter.cpp
@@ -36,6 +36,12 @@ SkiaColorFilter::~SkiaColorFilter() {
SkiaColorMatrixFilter::SkiaColorMatrixFilter(SkColorFilter* skFilter, float* matrix, float* vector):
SkiaColorFilter(skFilter, kColorMatrix, true), mMatrix(matrix), mVector(vector) {
+ // Skia uses the range [0..255] for the addition vector, but we need
+ // the [0..1] range to apply the vector in GLSL
+ for (int i = 0; i < 4; i++) {
+ mVector[i] /= 255.0f;
+ }
+
// TODO: We should be smarter about this
mBlend = true;
}
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
index 24a9d71..76b1ec6 100644
--- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
+++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
@@ -672,9 +672,9 @@ public class DefaultContainerService extends IntentService {
}
// Pick user preference
- int installPreference = Settings.System.getInt(getApplicationContext()
+ int installPreference = Settings.Global.getInt(getApplicationContext()
.getContentResolver(),
- Settings.Secure.DEFAULT_INSTALL_LOCATION,
+ Settings.Global.DEFAULT_INSTALL_LOCATION,
PackageHelper.APP_INSTALL_AUTO);
if (installPreference == PackageHelper.APP_INSTALL_INTERNAL) {
prefer = PREFER_INTERNAL;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 8275b25..c8ce3cd 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -34,6 +34,7 @@ import android.os.Environment;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
+import android.provider.Settings.Global;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -67,7 +68,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
// is properly propagated through your change. Not doing so will result in a loss of user
// settings.
- private static final int DATABASE_VERSION = 88;
+ private static final int DATABASE_VERSION = 89;
private Context mContext;
private int mUserHandle;
@@ -472,7 +473,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
String value =
mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0";
db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" +
- Settings.Secure.ASSISTED_GPS_ENABLED + "','" + value + "');");
+ Settings.Global.ASSISTED_GPS_ENABLED + "','" + value + "');");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
@@ -721,8 +722,8 @@ public class DatabaseHelper extends SQLiteOpenHelper {
if (upgradeVersion == 55) {
/* Move the install location settings. */
String[] settingsToMove = {
- Secure.SET_INSTALL_LOCATION,
- Secure.DEFAULT_INSTALL_LOCATION
+ Global.SET_INSTALL_LOCATION,
+ Global.DEFAULT_INSTALL_LOCATION
};
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false);
db.beginTransaction();
@@ -730,8 +731,8 @@ public class DatabaseHelper extends SQLiteOpenHelper {
try {
stmt = db.compileStatement("INSERT INTO system(name,value)"
+ " VALUES(?,?);");
- loadSetting(stmt, Secure.SET_INSTALL_LOCATION, 0);
- loadSetting(stmt, Secure.DEFAULT_INSTALL_LOCATION,
+ loadSetting(stmt, Global.SET_INSTALL_LOCATION, 0);
+ loadSetting(stmt, Global.DEFAULT_INSTALL_LOCATION,
PackageHelper.APP_INSTALL_AUTO);
db.setTransactionSuccessful();
} finally {
@@ -1190,7 +1191,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
+ " VALUES(?,?);");
- loadBooleanSetting(stmt, Settings.Secure.PACKAGE_VERIFIER_ENABLE,
+ loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE,
R.bool.def_package_verifier_enable);
db.setTransactionSuccessful();
} finally {
@@ -1300,9 +1301,9 @@ public class DatabaseHelper extends SQLiteOpenHelper {
db.beginTransaction();
try {
String[] settingsToMove = {
- Settings.Secure.PACKAGE_VERIFIER_ENABLE,
- Settings.Secure.PACKAGE_VERIFIER_TIMEOUT,
- Settings.Secure.PACKAGE_VERIFIER_DEFAULT_RESPONSE
+ Settings.Global.PACKAGE_VERIFIER_ENABLE,
+ Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
+ Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE
};
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
@@ -1319,9 +1320,9 @@ public class DatabaseHelper extends SQLiteOpenHelper {
db.beginTransaction();
try {
String[] settingsToMove = {
- Settings.Secure.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS,
- Settings.Secure.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS,
- Settings.Secure.GPRS_REGISTER_CHECK_PERIOD_MS
+ Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS,
+ Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS,
+ Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS
};
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
@@ -1333,6 +1334,52 @@ public class DatabaseHelper extends SQLiteOpenHelper {
upgradeVersion = 88;
}
+ if (upgradeVersion == 88) {
+ if (mUserHandle == UserHandle.USER_OWNER) {
+ db.beginTransaction();
+ try {
+ String[] settingsToMove = {
+ Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD,
+ Settings.Global.BATTERY_DISCHARGE_THRESHOLD,
+ Settings.Global.SEND_ACTION_APP_ERROR,
+ Settings.Global.DROPBOX_AGE_SECONDS,
+ Settings.Global.DROPBOX_MAX_FILES,
+ Settings.Global.DROPBOX_QUOTA_KB,
+ Settings.Global.DROPBOX_QUOTA_PERCENT,
+ Settings.Global.DROPBOX_RESERVE_PERCENT,
+ Settings.Global.DROPBOX_TAG_PREFIX,
+ Settings.Global.ERROR_LOGCAT_PREFIX,
+ Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL,
+ Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD,
+ Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE,
+ Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES,
+ Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES,
+ Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
+ Settings.Global.CONNECTIVITY_CHANGE_DELAY,
+ Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
+ Settings.Global.CAPTIVE_PORTAL_SERVER,
+ Settings.Global.NSD_ON,
+ Settings.Global.SET_INSTALL_LOCATION,
+ Settings.Global.DEFAULT_INSTALL_LOCATION,
+ Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY,
+ Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY,
+ Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT,
+ Settings.Global.HTTP_PROXY,
+ Settings.Global.GLOBAL_HTTP_PROXY_HOST,
+ Settings.Global.GLOBAL_HTTP_PROXY_PORT,
+ Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
+ Settings.Global.SET_GLOBAL_HTTP_PROXY,
+ Settings.Global.DEFAULT_DNS_SERVER,
+ };
+ moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+ }
+ upgradeVersion = 89;
+ }
+
// *** Remember to update DATABASE_VERSION above!
if (upgradeVersion != currentVersion) {
@@ -1741,8 +1788,8 @@ public class DatabaseHelper extends SQLiteOpenHelper {
loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
R.bool.def_notification_pulse);
- loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0);
- loadSetting(stmt, Settings.Secure.DEFAULT_INSTALL_LOCATION,
+ loadSetting(stmt, Settings.Global.SET_INSTALL_LOCATION, 0);
+ loadSetting(stmt, Settings.Global.DEFAULT_INSTALL_LOCATION,
PackageHelper.APP_INSTALL_AUTO);
loadUISoundEffectsSettings(stmt);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 6d8b08f..10f96cc 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -110,115 +110,145 @@ public class SettingsProvider extends ContentProvider {
// table, shared across all users
// These must match Settings.Secure.MOVED_TO_GLOBAL
sSecureGlobalKeys = new HashSet<String>();
- sSecureGlobalKeys.add(Settings.Secure.ADB_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.ASSISTED_GPS_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.BLUETOOTH_ON);
- sSecureGlobalKeys.add(Settings.Secure.CDMA_CELL_BROADCAST_SMS);
- sSecureGlobalKeys.add(Settings.Secure.CDMA_ROAMING_MODE);
- sSecureGlobalKeys.add(Settings.Secure.CDMA_SUBSCRIPTION_MODE);
- sSecureGlobalKeys.add(Settings.Secure.DATA_ACTIVITY_TIMEOUT_MOBILE);
- sSecureGlobalKeys.add(Settings.Secure.DATA_ACTIVITY_TIMEOUT_WIFI);
- sSecureGlobalKeys.add(Settings.Secure.DATA_ROAMING);
- sSecureGlobalKeys.add(Settings.Secure.DEVELOPMENT_SETTINGS_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.DEVICE_PROVISIONED);
- sSecureGlobalKeys.add(Settings.Secure.DISPLAY_DENSITY_FORCED);
- sSecureGlobalKeys.add(Settings.Secure.DISPLAY_SIZE_FORCED);
- sSecureGlobalKeys.add(Settings.Secure.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
- sSecureGlobalKeys.add(Settings.Secure.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
- sSecureGlobalKeys.add(Settings.Secure.INSTALL_NON_MARKET_APPS);
- sSecureGlobalKeys.add(Settings.Secure.MOBILE_DATA);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_DEV_BUCKET_DURATION);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_DEV_DELETE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_DEV_PERSIST_BYTES);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_DEV_ROTATE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_GLOBAL_ALERT_BYTES);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_POLL_INTERVAL);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_REPORT_XT_OVER_DEV);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_SAMPLE_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_TIME_CACHE_MAX_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_BUCKET_DURATION);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_DELETE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_PERSIST_BYTES);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_ROTATE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_TAG_BUCKET_DURATION);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_TAG_DELETE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_TAG_PERSIST_BYTES);
- sSecureGlobalKeys.add(Settings.Secure.NETSTATS_UID_TAG_ROTATE_AGE);
- sSecureGlobalKeys.add(Settings.Secure.NETWORK_PREFERENCE);
- sSecureGlobalKeys.add(Settings.Secure.NITZ_UPDATE_DIFF);
- sSecureGlobalKeys.add(Settings.Secure.NITZ_UPDATE_SPACING);
- sSecureGlobalKeys.add(Settings.Secure.NTP_SERVER);
- sSecureGlobalKeys.add(Settings.Secure.NTP_TIMEOUT);
- sSecureGlobalKeys.add(Settings.Secure.PDP_WATCHDOG_ERROR_POLL_COUNT);
- sSecureGlobalKeys.add(Settings.Secure.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS);
- sSecureGlobalKeys.add(Settings.Secure.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT);
- sSecureGlobalKeys.add(Settings.Secure.PDP_WATCHDOG_POLL_INTERVAL_MS);
- sSecureGlobalKeys.add(Settings.Secure.PDP_WATCHDOG_TRIGGER_PACKET_COUNT);
- sSecureGlobalKeys.add(Settings.Secure.SAMPLING_PROFILER_MS);
- sSecureGlobalKeys.add(Settings.Secure.SETUP_PREPAID_DATA_SERVICE_URL);
- sSecureGlobalKeys.add(Settings.Secure.SETUP_PREPAID_DETECTION_REDIR_HOST);
- sSecureGlobalKeys.add(Settings.Secure.SETUP_PREPAID_DETECTION_TARGET_URL);
- sSecureGlobalKeys.add(Settings.Secure.TETHER_DUN_APN);
- sSecureGlobalKeys.add(Settings.Secure.TETHER_DUN_REQUIRED);
- sSecureGlobalKeys.add(Settings.Secure.TETHER_SUPPORTED);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_HELP_URI);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_MAX_NTP_CACHE_AGE_SEC);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_NOTIFICATION_TYPE);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_POLLING_SEC);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_RESET_DAY);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_THRESHOLD_BYTES);
- sSecureGlobalKeys.add(Settings.Secure.THROTTLE_VALUE_KBITSPS);
- sSecureGlobalKeys.add(Settings.Secure.USB_MASS_STORAGE_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.USE_GOOGLE_MAIL);
- sSecureGlobalKeys.add(Settings.Secure.WEB_AUTOFILL_QUERY_URL);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_COUNTRY_CODE);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_FRAMEWORK_SCAN_INTERVAL_MS);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_FREQUENCY_BAND);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_IDLE_MS);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_MAX_DHCP_RETRY_COUNT);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_ON);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_P2P_DEVICE_NAME);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_SAVED_STATE);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_WATCHDOG_NUM_ARP_PINGS);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_WATCHDOG_ON);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
- sSecureGlobalKeys.add(Settings.Secure.WIFI_WATCHDOG_RSSI_FETCH_INTERVAL_MS);
- sSecureGlobalKeys.add(Settings.Secure.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
- sSecureGlobalKeys.add(Settings.Secure.PACKAGE_VERIFIER_ENABLE);
- sSecureGlobalKeys.add(Settings.Secure.PACKAGE_VERIFIER_TIMEOUT);
- sSecureGlobalKeys.add(Settings.Secure.PACKAGE_VERIFIER_DEFAULT_RESPONSE);
- sSecureGlobalKeys.add(Settings.Secure.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS);
- sSecureGlobalKeys.add(Settings.Secure.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS);
- sSecureGlobalKeys.add(Settings.Secure.GPRS_REGISTER_CHECK_PERIOD_MS);
- sSecureGlobalKeys.add(Settings.Secure.WTF_IS_FATAL);
+ sSecureGlobalKeys.add(Settings.Global.ADB_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.ASSISTED_GPS_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.BLUETOOTH_ON);
+ sSecureGlobalKeys.add(Settings.Global.CDMA_CELL_BROADCAST_SMS);
+ sSecureGlobalKeys.add(Settings.Global.CDMA_ROAMING_MODE);
+ sSecureGlobalKeys.add(Settings.Global.CDMA_SUBSCRIPTION_MODE);
+ sSecureGlobalKeys.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE);
+ sSecureGlobalKeys.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI);
+ sSecureGlobalKeys.add(Settings.Global.DATA_ROAMING);
+ sSecureGlobalKeys.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.DEVICE_PROVISIONED);
+ sSecureGlobalKeys.add(Settings.Global.DISPLAY_DENSITY_FORCED);
+ sSecureGlobalKeys.add(Settings.Global.DISPLAY_SIZE_FORCED);
+ sSecureGlobalKeys.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
+ sSecureGlobalKeys.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
+ sSecureGlobalKeys.add(Settings.Global.INSTALL_NON_MARKET_APPS);
+ sSecureGlobalKeys.add(Settings.Global.MOBILE_DATA);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_DELETE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_POLL_INTERVAL);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_REPORT_XT_OVER_DEV);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_SAMPLE_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_DELETE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_ROTATE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE);
+ sSecureGlobalKeys.add(Settings.Global.NETWORK_PREFERENCE);
+ sSecureGlobalKeys.add(Settings.Global.NITZ_UPDATE_DIFF);
+ sSecureGlobalKeys.add(Settings.Global.NITZ_UPDATE_SPACING);
+ sSecureGlobalKeys.add(Settings.Global.NTP_SERVER);
+ sSecureGlobalKeys.add(Settings.Global.NTP_TIMEOUT);
+ sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT);
+ sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS);
+ sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT);
+ sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS);
+ sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT);
+ sSecureGlobalKeys.add(Settings.Global.SAMPLING_PROFILER_MS);
+ sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
+ sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST);
+ sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL);
+ sSecureGlobalKeys.add(Settings.Global.TETHER_DUN_APN);
+ sSecureGlobalKeys.add(Settings.Global.TETHER_DUN_REQUIRED);
+ sSecureGlobalKeys.add(Settings.Global.TETHER_SUPPORTED);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_HELP_URI);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_MAX_NTP_CACHE_AGE_SEC);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_NOTIFICATION_TYPE);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_POLLING_SEC);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_RESET_DAY);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_THRESHOLD_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.THROTTLE_VALUE_KBITSPS);
+ sSecureGlobalKeys.add(Settings.Global.USB_MASS_STORAGE_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.USE_GOOGLE_MAIL);
+ sSecureGlobalKeys.add(Settings.Global.WEB_AUTOFILL_QUERY_URL);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_COUNTRY_CODE);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_FREQUENCY_BAND);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_IDLE_MS);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_ON);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_SAVED_STATE);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_WATCHDOG_ON);
+ sSecureGlobalKeys.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
+ sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_ENABLE);
+ sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT);
+ sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE);
+ sSecureGlobalKeys.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS);
+ sSecureGlobalKeys.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS);
+ sSecureGlobalKeys.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS);
+ sSecureGlobalKeys.add(Settings.Global.WTF_IS_FATAL);
+ sSecureGlobalKeys.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD);
+ sSecureGlobalKeys.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD);
+ sSecureGlobalKeys.add(Settings.Global.SEND_ACTION_APP_ERROR);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_AGE_SECONDS);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_MAX_FILES);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_QUOTA_KB);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_QUOTA_PERCENT);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_RESERVE_PERCENT);
+ sSecureGlobalKeys.add(Settings.Global.DROPBOX_TAG_PREFIX);
+ sSecureGlobalKeys.add(Settings.Global.ERROR_LOGCAT_PREFIX);
+ sSecureGlobalKeys.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL);
+ sSecureGlobalKeys.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD);
+ sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE);
+ sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES);
+ sSecureGlobalKeys.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS);
+ sSecureGlobalKeys.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY);
+ sSecureGlobalKeys.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);
+ sSecureGlobalKeys.add(Settings.Global.CAPTIVE_PORTAL_SERVER);
+ sSecureGlobalKeys.add(Settings.Global.NSD_ON);
+ sSecureGlobalKeys.add(Settings.Global.SET_INSTALL_LOCATION);
+ sSecureGlobalKeys.add(Settings.Global.DEFAULT_INSTALL_LOCATION);
+ sSecureGlobalKeys.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY);
+ sSecureGlobalKeys.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY);
+ sSecureGlobalKeys.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT);
+ sSecureGlobalKeys.add(Settings.Global.HTTP_PROXY);
+ sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST);
+ sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT);
+ sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
+ sSecureGlobalKeys.add(Settings.Global.SET_GLOBAL_HTTP_PROXY);
+ sSecureGlobalKeys.add(Settings.Global.DEFAULT_DNS_SERVER);
// Keys from the 'system' table now moved to 'global'
// These must match Settings.System.MOVED_TO_GLOBAL
sSystemGlobalKeys = new HashSet<String>();
- sSystemGlobalKeys.add(Settings.System.AIRPLANE_MODE_ON);
- sSystemGlobalKeys.add(Settings.System.AIRPLANE_MODE_RADIOS);
- sSystemGlobalKeys.add(Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
- sSystemGlobalKeys.add(Settings.System.AUTO_TIME);
- sSystemGlobalKeys.add(Settings.System.AUTO_TIME_ZONE);
- sSystemGlobalKeys.add(Settings.System.CAR_DOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.CAR_UNDOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.DESK_DOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.DESK_UNDOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.DOCK_SOUNDS_ENABLED);
- sSystemGlobalKeys.add(Settings.System.LOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.UNLOCK_SOUND);
- sSystemGlobalKeys.add(Settings.System.LOW_BATTERY_SOUND);
- sSystemGlobalKeys.add(Settings.System.POWER_SOUNDS_ENABLED);
- sSystemGlobalKeys.add(Settings.System.STAY_ON_WHILE_PLUGGED_IN);
- sSystemGlobalKeys.add(Settings.System.WIFI_SLEEP_POLICY);
+ sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_ON);
+ sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_RADIOS);
+ sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+ sSystemGlobalKeys.add(Settings.Global.AUTO_TIME);
+ sSystemGlobalKeys.add(Settings.Global.AUTO_TIME_ZONE);
+ sSystemGlobalKeys.add(Settings.Global.CAR_DOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.CAR_UNDOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.DESK_DOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.DESK_UNDOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.DOCK_SOUNDS_ENABLED);
+ sSystemGlobalKeys.add(Settings.Global.LOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.UNLOCK_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.LOW_BATTERY_SOUND);
+ sSystemGlobalKeys.add(Settings.Global.POWER_SOUNDS_ENABLED);
+ sSystemGlobalKeys.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
+ sSystemGlobalKeys.add(Settings.Global.WIFI_SLEEP_POLICY);
+ sSystemGlobalKeys.add(Settings.Global.MODE_RINGER);
}
private boolean settingMovedToGlobal(final String name) {
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index a7294ec..3ef44d9 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -214,6 +214,11 @@
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.DESK_DOCK" />
+ </intent-filter>
</activity>
</application>
</manifest>
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png
index d5650a7..7c6ca75 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png
index 7d6fed5..ff0ba07 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_bluetooth_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png
index bc6462b..0c301ab 100644
--- a/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png
+++ b/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
index f4e28ae..ec0424a 100644
--- a/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png
index 19e4e40..61eff94 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png
index ec30791..b480a80 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_bluetooth_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png
index 4f5bba5..5c577cb 100644
--- a/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png
+++ b/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
index ef7afb8..7efb502 100644
--- a/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png
index 65a873d..b4d9175 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png
index 7ac3015..598d967 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_bluetooth_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png
index e243e50..98d0cfb 100644
--- a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png
+++ b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
index cdad949..17f4169 100644
--- a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
index 635dac8..8fdde92 100644
--- a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
+++ b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
@@ -40,6 +40,7 @@
android:layout_height="match_parent"
android:fadingEdge="horizontal"
android:scrollbars="none"
+ android:layout_gravity="right"
android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length">
<LinearLayout android:id="@+id/recents_linear_layout"
diff --git a/packages/SystemUI/res/layout/quick_settings.xml b/packages/SystemUI/res/layout/quick_settings.xml
index da4b133..c1bcdfe 100644
--- a/packages/SystemUI/res/layout/quick_settings.xml
+++ b/packages/SystemUI/res/layout/quick_settings.xml
@@ -24,27 +24,21 @@
<!-- TODO: Put into ScrollView -->
<ScrollView
android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <com.android.systemui.statusbar.phone.QuickSettingsContainerView
- android:id="@+id/quick_settings_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:animateLayoutChanges="true"
- android:columnCount="@integer/quick_settings_num_columns"
- />
- </ScrollView>
- <LinearLayout android:id="@+id/handle"
- android:layout_width="match_parent"
- android:layout_height="@dimen/close_handle_height"
- android:layout_gravity="bottom"
- android:orientation="vertical"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/close_handle_underlap"
>
- <ImageView
+ <com.android.systemui.statusbar.phone.QuickSettingsContainerView
+ android:id="@+id/quick_settings_container"
android:layout_width="match_parent"
- android:layout_height="@dimen/close_handle_height"
- android:layout_gravity="bottom"
- android:scaleType="fitXY"
- android:src="@drawable/status_bar_close"
+ android:layout_height="wrap_content"
+ android:animateLayoutChanges="true"
+ android:columnCount="@integer/quick_settings_num_columns"
/>
- </LinearLayout>
+ </ScrollView>
+
+ <View
+ android:id="@+id/handle"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/close_handle_height"
+ />
</com.android.systemui.statusbar.phone.SettingsPanelView > \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml b/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml
index 6ae10d5..ac87496 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_airplane.xml
@@ -21,5 +21,4 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
- android:text="@string/quick_settings_airplane_mode_label"
/> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml b/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml
index 565055c..2f3a9c6 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_bluetooth.xml
@@ -21,5 +21,4 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
- android:text="@string/quick_settings_bluetooth_label"
/> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml b/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml
index ac872e6..5b3ce1f 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_brightness.xml
@@ -22,5 +22,4 @@
android:layout_gravity="center"
android:gravity="center"
android:drawableTop="@drawable/ic_qs_brightness_auto_off"
- android:text="@string/quick_settings_brightness_label"
/> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml b/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml
index 4dbf6a0..6aecaea 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_rotation_lock.xml
@@ -21,5 +21,4 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
- android:text="@string/quick_settings_rotation_unlocked_label"
/> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_settings.xml b/packages/SystemUI/res/layout/quick_settings_tile_settings.xml
index 7026ebc..d155935 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_settings.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_settings.xml
@@ -16,10 +16,10 @@
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/TextAppearance.QuickSettings.TileView"
+ android:id="@+id/settings_tileview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:drawableTop="@drawable/ic_qs_settings"
- android:text="@string/quick_settings_settings_label"
/> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_user.xml b/packages/SystemUI/res/layout/quick_settings_tile_user.xml
index 08e8e20..1732f6d 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_user.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_user.xml
@@ -18,6 +18,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
+ android:id="@+id/user_imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_qs_default_user"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 6436a7f..ffcead0 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -76,10 +76,9 @@
</ScrollView>
</LinearLayout>
- <View android:id="@+id/handle"
+ <View
+ android:id="@+id/handle"
android:layout_width="match_parent"
android:layout_height="@dimen/close_handle_height"
- android:layout_gravity="bottom"
/>
-
</com.android.systemui.statusbar.phone.NotificationPanelView><!-- end of sliding panel -->
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 122fd60..e17505c 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi een strepie."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi twee strepies."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi drie strepies."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-sein vol."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi sein vol."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Geen WiMAX nie."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX een strepie."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX twee strepies."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Instellings"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Tyd"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ek"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nie gekoppel nie"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Geen netwerk nie"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi af"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi-skerm"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Geen Wi-Fi-skerm-verbinding nie"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi af"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi-skerm"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Geen Wi-Fi-skerm-verbinding nie"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 2e220ec..e54dd95 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi አንድ አሞሌ::"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi ሁለት አሞሌዎች::"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi ሶስት አሞሌዎች::"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"የWiFi አመልካች ሙሉ ነው።"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi ሲግናል ሙሉ ነው::"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"ምንም WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX አንድ አሞሌ።"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ሁለት አሞሌዎች።"</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"ቅንብሮች"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"ሰዓት"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"እኔ"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"አልተገናኘም"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ምንም አውታረ መረብ የለም"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi ጠፍቷል"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"የWifi ማሳያ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"ምንም የWifi ማሳያ ግንኙነት የለም"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ጠፍቷል"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"የWi-Fi ማሳያ"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"ምንም የWi-Fi ማሳያ ግንኙነት የለም"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ብሩህነት"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ራስ-ሰር"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 659eb58..e3cd59e 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"شريط واحد لـ Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"شريطان لـ Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"ثلاثة أشرطة لـ Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"إشارة WiFi كاملة."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"إشارة كاملة لـ Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"ليس هناك WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"شريط WiMAX واحد."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"شريطا WiMAX."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"الإعدادات"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"الوقت"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"أنا"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ليست متصلة"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"لا تتوفر شبكة"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"إيقاف Wifi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"شاشة Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"لا يتوفر اتصال بشاشة Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"إيقاف Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"عرض Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"ليس هناك اتصال لعرض Wi-Fi."</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"السطوع"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"تلقائي"</string>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 0d6f4c6..dd8baa9 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi, адзiн слупок."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi, два слупкi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi, тры слупкi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Поўны сігнал Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Моцны сiгнал Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Няма сiгналу WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Адзiн слупок сiгналу WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Два слупкi сiгналу WiMAX."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Налады"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Час"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Я"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Няма падключэння"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Няма сеткi"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi выключаны"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Дысплей Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Няма падключэння да дысплея Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi адключаны"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Дысплей Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Няма падключэння да Дысплею Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркасць"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АЎТА"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 02c38b7..a3c30e8 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi е с една чертичка."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi е с две чертички."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi е с три чертички."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Сигналът за WiFi е пълен."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Сигналът за Wi-Fi е пълен."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Няма WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX е с една чертичка."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX е с две чертички."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Настройки"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Време"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Аз"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Няма връзка"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Няма мрежа"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"WiFi е изключен"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Дисплей през WiFi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Няма връзка с дисплея през WiFi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi е изключен"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Дисплей през Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Няма връзка с дисплея през Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркост"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТ."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 7aa1e88..16a412d 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Una barra de Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dues barres de Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tres barres de Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Senyal Wi-Fi: complet."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Senyal Wi-Fi complet."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Sense WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dues barres de WiMAX."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Configuració"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Hora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Jo"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Desconnectat"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No hi ha cap xarxa"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi desactivada"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Pantalla Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Sense connexió a pantalla Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desconnectat"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Pantalla Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"No hi ha cap connexió amb una pantalla Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillantor"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÀTICA"</string>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 5a391a9..c08050a 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi – jedna čárka."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi – dvě čárky."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi – tři čárky."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Plný signál sítě Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi – plný signál."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Žádný signál sítě WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Jedna čárka signálu sítě WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvě čárky signálu sítě WiMAX."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Nastavení"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Doba"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Já"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nepřipojeno"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Žádná síť"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Síť Wi-Fi je vypnuta"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Displej přes Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Žádné připojení k displeji přes Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi vypnuta"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Displej přes Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Žádné připojení displeje přes Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATICKY"</string>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 47a5c5b..fde9916 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi har en bjælke."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi har to bjælker."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi har tre bjælker."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signal fuldt."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signalet er godt."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX en bjælke."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX to bjælker."</string>
@@ -168,11 +168,17 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Indstillinger"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Tid"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Mig"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
+ <skip />
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Intet netværk"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi slået fra"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi-skærm"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Ingen forbindelse til Wi-Fi-skærm"</string>
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
+ <skip />
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 791bfab..d3069e6 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WLAN, ein Balken"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WLAN, zwei Balken"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WLAN, drei Balken"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Volle WLAN-Signalstärke"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WLAN, volle Signalstärke"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Kein WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX - ein Balken"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX - zwei Balken"</string>
@@ -151,7 +151,7 @@
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Bildschirm bleibt im Querformat."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildschirm bleibt im Hochformat."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="870400522982252717">"Träume starten"</string>
+ <string name="start_dreams" msgid="870400522982252717">"Dream-Funktion starten"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flugmodus"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Akku wird aufgeladen (<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>)"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Einstellungen"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Uhrzeit"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ich"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"WLAN"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"WLAN"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nicht verbunden"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Kein Netz"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"WLAN aus"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"WLAN-Anzeige"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Keine WLAN-Anzeige"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WLAN aus"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"WLAN-Display"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Keine Verbindung zum WLAN-Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helligkeit"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index afce212..a72ae49 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Μία γραμμή Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Δύο γραμμές Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Τρεις γραμμές Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Πλήρες σήμα WiFi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Πλήρες σήμα Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Δεν υπάρχει σήμα WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Σήμα WiMAX μία γραμμή."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Σήμα WiMAX δύο γραμμές."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Ρυθμίσεις"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Ώρα"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Εγώ"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Μη συνδεδεμένο"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Κανένα δίκτυο"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Απενεργοποιημένο Wifi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Οθόνη Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Δεν υπάρχει σύνδεση οθόνης Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ανενεργό"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Οθόνη Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Χωρίς σύνδεση οθόνης Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Φωτεινότητα"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ΑΥΤΟΜΑΤΗ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 5bfe7ae..9f03bfc 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi one bar."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi two bars."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi three bars."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi signal full."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi signal full."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"No WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX one bar."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX two bars."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Settings"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Time"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Me"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Not Connected"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No Network"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi Off"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"No Wi-Fi Display Connection"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Off"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"No Wi-Fi Display Connection"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index ec85309..756f5e3 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Una barra de señal Wi-Fi"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dos barras de señal Wi-Fi"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tres barras de señal Wi-Fi"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Señal de Wi-Fi completa"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Señal Wi-Fi máxima"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Sin conexión WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Configuración"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Hora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Yo"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Tecnología Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Sin conexión"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sin red"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi desactivado"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Pantalla Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Sin conexión con pantalla Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Tecnología Wi-Fi desactivada"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Sin conexión con la tecnología Wi-Fi Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÁTICO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index a82bc03..79d682d 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Una barra de Wi-Fi"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dos barras de Wi-Fi"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tres barras de Wi-Fi"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Señal de Wi-Fi al máximo"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Señal de Wi-Fi al máximo"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Sin conexión WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Ajustes"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Hora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Yo"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"No conectado"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No hay red."</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi desactivado"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Pantalla Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Sin conexión a pantalla Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desactivado"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Pantalla Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Sin conexión a pantalla Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index d17cb02..8113e8d 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi signaal: üks post."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi signaal: kaks posti."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi signaal: kolm posti."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi-signaal on tugev."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi signaal on täis."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX-i pole."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-i on üks riba."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-i on kaks riba."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Seaded"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Aeg"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Mina"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"WiFi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ühendus puudub"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Võrku pole"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"WiFi on väljas"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"WiFi-ekraan"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"WiFi-ekraani ühendus puudub"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WiFi-ühendus on väljas"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"WiFi kuva"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"WiFi-ühenduse puudumise kuva"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Heledus"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMAATNE"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 4379dcb..47c5140 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi یک نوار دارد."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi دو نوار دارد."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi سه نوار دارد."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"قدرت سیگنال WiFi کامل است."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"سیگنال Wi-Fi کامل است."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX وجود ندارد."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX دارای یک نوار است."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX دارای دو نوار است."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"تنظیمات"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"زمان"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"من"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"متصل نیست"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"شبکه‌ای موجود نیست"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi خاموش"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"صفحه نمایش Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"اتصال صفحه نمایش Wifi وجود ندارد"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi خاموش است"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"بدون اتصال Wi-Fi Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"روشنایی"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"خودکار"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index bc5596e..ff93234 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wifi-signaali: yksi palkki."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wifi-signaali: kaksi palkkia."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wifi-signaali: kolme palkkia."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Vahva wifi-signaali."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wifi-signaali: täysi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ei WiMAX-yhteyttä."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: yksi palkki."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: kaksi palkkia."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Asetukset"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Aika"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Minä"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wifi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ei yhteyttä"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ei verkkoa"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi pois käytöstä"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wifi-näyttö"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Ei yhteyttä wifi-näyttöön"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wifi-yhteys pois käytöstä"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wifi-näyttö"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Ei yhteyttä wifi-näyttöön"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kirkkaus"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index c3ac927..55fd6cd 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Signal Wi-Fi très faible"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Signal Wi-Fi faible"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Signal Wi-Fi bon"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Signal Wi-Fi excellent"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Signal Wi-Fi excellent"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Aucun signal WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX : faible"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Paramètres"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Heure"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Moi"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connecté"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Aucun réseau"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi désactivé"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Écran Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Aucune connexion à un écran Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi désactivé"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Aucune connexion Wi-Fi Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminosité"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATIQUE"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index d1590fe..eb9263a 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi का एक बार."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi के दो बार."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi के तीन बार."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"पूर्ण WiFi सि‍ग्‍नल."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi सिग्नल पूर्ण."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX नहीं."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX एक बार."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX दो बार."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"सेटिंग"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"समय"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"मुझे"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"कनेक्ट नहीं है"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"कोई नेटवर्क नहीं"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi बंद"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wifi डिस्प्ले"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"कोई Wifi डिस्प्ले कनेक्शन नहीं"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi बंद"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi प्रदर्शन"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"कोई Wi-Fi प्रदर्शन कनेक्शन नहीं"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"चमक"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"स्वत:"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index c56b20f..50384ab 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi jedna crtica."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi dvije crtice."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi tri crtice."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi signal pun."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi signal pun."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Nema signala WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX s jednim stupcem."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX s dva stupca."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Postavke"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Vrijeme"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ja"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nije povezano"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nema mreže"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi isključen"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"WiFi zaslon"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nema veze s Wifi zaslonom"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi isključen"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi zaslon"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nema veze s Wi-Fi zaslonom"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Svjetlina"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATSKI"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 48932b6..6488694 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi -- egy sáv"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi -- két sáv"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi -- három sáv"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi jel teljes."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi -- teljes jel"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Nincs WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-jel: egy sáv."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-jel: két sáv."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Beállítások"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Idő"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Én"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nincs kapcsolat"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nincs hálózat"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi kikapcsolva"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi kijelző"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nincs kapcsolat Wi-Fi kijelzővel"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi kikapcsolva"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi kijelző"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nincs kapcsolat a Wi-Fi kijelzővel"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Fényerő"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"automatikus"</string>
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 72bd126..d95534a 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi satu bilah."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi dua bilah."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi tiga bilah."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinyal WiFi penuh."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sinyal Wi-Fi penuh."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Tidak ada WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX satu batang."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua batang."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Setelan"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Waktu"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Saya"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Tidak Tersambung"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tidak Ada Jaringan"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi Mati"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Tampilan Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Tidak Ada Koneksi Tampilan Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Mati"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Tampilan Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Tidak Ada Sambungan Tampilan Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OTOMATIS"</string>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index d6b96f6..92bd9c6 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: una barra."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: due barre."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: tre barre."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Massimo segnale Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Segnale Wi-Fi completo."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Nessun segnale WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: una barra."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: due barre."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Impostazioni"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Ora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Io"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connesso"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nessuna rete"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi non attivo"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Schermo Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nessun collegamento a schermi Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi disattivato"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Display Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nessuna connessione display Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminosità"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 150faaf..563089e 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"פס Wi-Fi אחד."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"שני פסי Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"שלושה פסי Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"אות ה-WiFi מלא."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"אות ה-Wi-Fi מלא."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"ללא WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"פס אחד של WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"שני פסים של WiMAX."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"הגדרות"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"שעה"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"אני"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"לא מחובר"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"אין רשת"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi מופסק"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"תצוגת Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"אין חיבור תצוגת Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi כבוי"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"תצוגת Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"אין חיבור לתצוגת Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"בהירות"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"אוטומטי"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 222eda2..71fb605 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi電波: レベル1"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi電波: レベル2"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi電波: レベル3"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi電波:フル"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi電波: フル"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX電波状態:圏外"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX電波状態:レベル1"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX電波状態:レベル2"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"設定"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"時間"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"このユーザー"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"接続されていません"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ネットワークなし"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi OFF"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fiディスプレイ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Wi-Fiディスプレイ接続なし"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi OFF"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fiディスプレイ"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Wi-Fiディスプレイに接続されていません"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"画面の明るさ"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自動"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index dca1e36..2eca801 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi 신호 막대가 한 개입니다."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi 신호 막대가 두 개입니다."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi 신호 막대가 세 개입니다."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 신호가 강합니다."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi 신호가 강합니다."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX가 없습니다."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 신호 막대가 하나입니다."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 신호 막대가 두 개입니다."</string>
@@ -149,7 +149,7 @@
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"화면이 가로 방향으로 잠겨 있습니다."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"화면이 세로 방향으로 잠겨 있습니다."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="870400522982252717">"화면보호기 시작"</string>
+ <string name="start_dreams" msgid="870400522982252717">"스크린 세이버 시작"</string>
<string name="ethernet_label" msgid="7967563676324087464">"이더넷"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"비행기 모드"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"충전 중(<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"설정"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"시간"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"나"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"연결되어 있지 않음"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"네트워크가 연결되지 않음"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi 사용 안함"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi 디스플레이"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Wi-Fi 디스플레이가 연결되지 않음"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi 꺼짐"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi 디스플레이"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"연결된 Wi-Fi 디스플레이 없음"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"밝기"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"자동"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 65cf268..56961af 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Viena „Wi-Fi“ juosta."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dvi „Wi-Fi“ signalo juostos."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Trys „Wi-Fi“ signalo juostos."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"„Wi-Fi“ signalas stiprus."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Stiprus „Wi-Fi“ signalas."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Nėra „WiMAX“ signalo."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Viena „WiMAX“ signalo juosta."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvi „WiMAX“ signalo juostos."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Nustatymai"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Laikas"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Aš"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Neprisijungta"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tinklo nėra"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"„Wi-Fi“ išjungta"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"„Wi-Fi“ pateiktis"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nėra „Wi-Fi“ pateikties ryšio"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"„Wi-Fi“ išjungta"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"„Wi-Fi“ pateiktis"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nėra „Wi-Fi“ pateikties ryšio"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Skaistis"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATINIS"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 69e36f6..dce9e0d 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: viena josla."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: divas joslas."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: trīs joslas."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Pilna piekļuve Wi-Fi signālam"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Maksimāls Wi-Fi signāla stiprums."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Bez WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX viena josla."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX divas joslas."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Iestatījumi"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Laiks"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Es"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nav izveidots savienojums"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nav tīkla"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi savienojums ir izslēgts."</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi displejs"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nav Wi-Fi displeja savienojuma"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ir izslēgts"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi displejs"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nav izveidots savienojums ar Wi-Fi displeju"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Spilgtums"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMĀTISKI"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 791c77d..cb67409 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Satu bar Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dua bar Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tiga bar Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Isyarat WiFi penuh."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Isyarat penuh Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Tiada WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX satu bar."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua bar."</string>
@@ -156,8 +156,7 @@
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Sudah dicas"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Peranti)"</string>
- <!-- no translation found for quick_settings_bluetooth_off_label (8159652146149219937) -->
- <skip />
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Dimatikan"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Putar"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Putaran Dikunci"</string>
@@ -169,12 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Tetapan"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Masa"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Saya"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Tidak Disambungkan"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tiada Rangkaian"</string>
- <!-- no translation found for quick_settings_wifi_off_label (3343111275022978538) -->
- <skip />
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Paparan Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Tiada Sambungan Paparan Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Dimatikan"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Paparan Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Tiada Sambungan Paparan Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index cb8e555..bbf3aed 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Dekningssignal for Wi-Fi med én stolpe."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dekningssignal for Wi-Fi med to stolper."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Dekningssignal for Wi-Fi med tre stolper."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signal er fullt."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Fullt Wi-Fi-signal"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX – én stolpe."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX – to stolper."</string>
@@ -168,11 +168,17 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Innstillinger"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Tidspunkt"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Meg"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
+ <skip />
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ingen nettverk"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi er slått av"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi-skjermer"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Ingen tilkobling for Wi-Fi-skjermer"</string>
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
+ <skip />
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 0ec9c44..bca7e5c 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wifi: één streepje."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wifi: twee streepjes."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wifi: drie streepjes."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signaal is op volledige sterkte."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wifi-signaal is op volledige sterkte."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Geen WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: één streepje."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: twee streepjes."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Instellingen"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Tijd"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ik"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wifi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Niet verbonden"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Geen netwerk"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi uit"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wifi-display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Geen wifi-displayverbinding"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wifi uit"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wifi-weergave"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Geen verbinding met wifi-weergave"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATISCH"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 09e32e1..0a24e08 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi jeden pasek."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi dwa paski."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi trzy paski."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sieć Wi-Fi: pełna moc sygnału."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Pełna moc sygnału Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX: brak"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: jeden pasek"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: dwa paski"</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Ustawienia"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Godzina"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ja"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Brak połączenia"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Brak sieci"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi wyłączone"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wyświetlacz Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Brak połączenia z wyświetlaczem Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wyłącz Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wyświetlacz Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Brak połączenia z wyświetlaczem Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jasność"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATYCZNA"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 5b362a7..cffccc4 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Uma barra de Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Duas barras de Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Três barras de Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinal Wi-Fi completo."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sinal de Wi-Fi completo."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Sem WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Uma barra de WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras de WiMAX."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Definições"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Hora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Eu"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Não Ligado"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sem Rede"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi Desativado"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Visor Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Sem Ligação ao Visor Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Desligado"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Visualização Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Sem Ligação de Visualização Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brilho"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÁTICO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index e2e5cd4..377a617 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Uma barra de Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Duas barras de Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Três barras de Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinal do Wi-Fi cheio."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"O sinal de Wi-Fi está cheio."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Sem WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Uma barra do WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras do WiMAX."</string>
@@ -158,8 +158,7 @@
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Carregado"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> dispositivos)"</string>
- <!-- no translation found for quick_settings_bluetooth_off_label (8159652146149219937) -->
- <skip />
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth desativado"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Girar automaticamente"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotação bloqueada"</string>
@@ -171,12 +170,17 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Configurações"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Hora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Eu"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
+ <skip />
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sem rede"</string>
- <!-- no translation found for quick_settings_wifi_off_label (3343111275022978538) -->
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
<skip />
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Sem conexão Wi-Fi Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brilho"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index ed3d869..6dd1f96 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -178,7 +178,7 @@
<skip />
<!-- no translation found for accessibility_wifi_three_bars (928322805193265041) -->
<skip />
- <!-- no translation found for accessibility_wifi_signal_full (1275764416228473932) -->
+ <!-- no translation found for accessibility_wifi_signal_full (4826278754383492058) -->
<skip />
<!-- no translation found for accessibility_no_wimax (4329180129727630368) -->
<skip />
@@ -306,15 +306,17 @@
<skip />
<!-- no translation found for quick_settings_user_label (5238995632130897840) -->
<skip />
- <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
<skip />
<!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
<skip />
- <!-- no translation found for quick_settings_wifi_off_label (3343111275022978538) -->
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
<skip />
- <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
<skip />
- <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
<skip />
<!-- no translation found for quick_settings_brightness_dialog_title (8599674057673605368) -->
<skip />
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index e480b15..521a143 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi o bară."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi două bare."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi trei bare."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Semnal Wi-Fi: complet."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi semnal complet."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Fără WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX o bară."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX două bare."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Setări"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Ora"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Eu"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Neconectat"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nicio reţea"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi dezactivat"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Afişaj Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Nu există conexiune pentru afişajul Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi deconectat"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Afişaj Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Nu există conexiune pentru afişaje Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminozitate"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMAT"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 333d221..69ac9bc 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: одно деление."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: два деления."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: три деления."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Надежный сигнал Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Надежный сигнал Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Нет сигнала WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Сигнал WiMAX: одно деление."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Сигнал WiMAX: два деления."</string>
@@ -158,7 +158,7 @@
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Заряжено"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Устройства Bluetooth (<xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Модуль Bluetooth выключен"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth выкл."</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркость"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автоповорот"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Поворот экрана заблокирован"</string>
@@ -170,11 +170,17 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Настройки"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Время"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Пользователь"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
+ <skip />
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Нет сети"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Модуль Wi-Fi выключен"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Экраны, подключенные через Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Экран не подключен"</string>
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
+ <skip />
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркость"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТОНАСТРОЙКА"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 32c37c4..94d222d 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Jedna čiarka signálu Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dve čiarky signálu Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tri čiarky signálu Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Plný signál siete Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Plný signál Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Žiadna sieť WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Jeden stĺpec signálu siete WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dva stĺpce signálu siete WiMAX."</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Nastavenia"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Čas"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ja"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nepripojené"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Žiadna sieť"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Sieť Wi-Fi je vypnutá"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Displej cez sieť Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Žiadne pripojenie k displeju cez sieť Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Sieť Wi-Fi je vypnutá"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Obrazovka Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Pripojenie k obrazovke Wi-Fi nie je k dispozícii"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATICKY"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 216b9d4..9e2f071 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Ena vrstica signala Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dve črtici signala Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tri črtice signala Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Signal Wi-Fi poln."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Poln signal Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ni signala WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX: ena črtica."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX: dve črtici."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Nastavitve"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Čas"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Jaz"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Povezava ni vzpostavljena"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ni omrežja"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi izklopljen"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Zaslon Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Ni povezav z zaslonom Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi izklopljen"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Zaslon Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Ni povezave za zaslon Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Svetlost"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"SAMODEJNO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index dcaf3bd..f1b5299 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi сигнал има једну црту."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi сигнал има две црте."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi сигнал има три црте."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi сигнал је најјачи."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi сигнал је најјачи."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Нема WiMAX сигнала."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX сигнал има једну црту."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX сигнал има две црте."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Подешавања"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Време"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ја"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Веза није успостављена"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Нема мреже"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi искључен"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi екран"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Нема везе са Wi-Fi екраном"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi је искључен"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi екран"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Нема везе са Wi-Fi екраном"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Осветљеност"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АУТОМАТСКА"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index eb76ad3..8d7e8c4 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: en stapel."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: två staplar."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: tre staplar."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signalen är full."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signalen är full."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: en stapel."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: två staplar."</string>
@@ -168,11 +168,17 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Inställningar"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Tid"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Jag"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <!-- no translation found for quick_settings_wifi_label (9135344704899546041) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_not_connected (7171904845345573431) -->
+ <skip />
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Inget nätverk"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Inaktivera Wi-Fi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wi-Fi-skärm"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Ingen anslutning till Wi-Fi-skärm"</string>
+ <!-- no translation found for quick_settings_wifi_off_label (7558778100843885864) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6893592964463624333) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (7834964244709912066) -->
+ <skip />
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ljusstyrka"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index e29a085..585d813 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -102,7 +102,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Mwambaa mmoja wa Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Miambaa miwili ya Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Miamba tatu ya Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Ishara ya Mtandao hewa imejaa"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Ishara kamili ya Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Hakuna WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Pau moja ya WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Pau mbili za WiMAX."</string>
@@ -166,11 +166,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Mipangilio"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Muda"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Mimi"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Haijaunganishwa"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Hakuna Mtandao"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wifi Imezimwa"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Onyesho la Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Hakuna Muunganisho wa Onyesho la Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Imezimwa"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Onyesho la Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Hakuna Muunganisho wa Onyesho la Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ung\'avu"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"KIOTOMATIKI"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw380dp/dimens.xml b/packages/SystemUI/res/values-sw380dp/dimens.xml
new file mode 100644
index 0000000..b39e94c
--- /dev/null
+++ b/packages/SystemUI/res/values-sw380dp/dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2012, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+-->
+<resources>
+ <!-- The fixed height of each tile -->
+ <dimen name="quick_settings_cell_height">124dp</dimen>
+</resources>
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
index a687571..df6ed19 100644
--- a/packages/SystemUI/res/values-sw600dp/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
@@ -44,4 +44,7 @@
<!-- On tablet-sized devices, we allocate the rightmost third(ish) of the draggable status bar
to quick settings. -->
<item type="dimen" name="settings_panel_dragzone_fraction">35%</item>
+
+ <!-- Minimum fraction of the screen that should be taken up by the notification panel. -->
+ <item type="dimen" name="notification_panel_min_height_frac">40%</item>
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 506c9b2..569a167 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"สัญญาณ WiFi หนึ่งขีด"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"สัญญาณ WiFi สองขีด"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"สัญญาณ WiFi สามขีด"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"สัญญาณ WiFi เต็ม"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"สัญญาณ WiFi เต็ม"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"ไม่มีสัญญาณ WiMAX"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"สัญญาณ WiMAX หนึ่งขีด"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"สัญญาณ WiMAX สองขีด"</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"การตั้งค่า"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"เวลา"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"ฉัน"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"WiFi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ไม่ได้เชื่อมต่อ"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ไม่มีเครือข่าย"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"ปิด WiFi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"การแสดงผลด้วย WiFi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"ไม่มีการเชื่อมต่อการแสดงผลด้วย WiFi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"ปิด WiFi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"การแสดงผล WiFi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"ไม่มีการเชื่อมต่อการแสดงผล WiFi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ความสว่าง"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"อัตโนมัติ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 7edd45a..9b40c96 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Isang bar ang Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dalawang bar ang Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tatlong bar ang Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Puno ang signal ng WiFi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Puno ang signal ng Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Walang WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX na isang bar."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX na dalawang bar."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Mga Setting"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Oras"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ako"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Hindi Nakakonekta"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Walang Network"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Naka-off ang Wifi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wifi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Walang Koneksyon sa Wifi Display"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Naka-off ang Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Display ng Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Walang Koneksyon ng Display ng Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index a2c08a1..56d9624 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Kablosuz gücü tek çubukta."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Kablosuz sinyal gücü iki çubuk."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Kablosuz sinyal gücü üç çubuk."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Kablosuz sinyali tam."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Kablosuz sinyal gücü tam."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX yok."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX tek çubuk."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki çubuk."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Ayarlar"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Saat"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Ben"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Kablosuz"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Kablosuz"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Bağlı Değil"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ağ yok"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Kablosuz Kapalı"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Kablosuz Ekran"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Kablosuz Ekran Bağlantısı Yok"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Kablosuz Kapalı"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Kablosuz Ekran"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Kablosuz Ekran Bağlantısı Yok"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Parlaklık"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OTOMATİK"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index a6cef76..6862887 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Одна смужка сигналу Wi-Fi."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Дві смужки сигналу Wi-Fi."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Три смужки сигналу Wi-Fi."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Максимальний сигнал Wi-Fi."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Максимальний сигнал Wi-Fi."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Немає сигналу WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Одна смужка сигналу WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Дві смужки сигналу WiMAX."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Налаштування"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Час"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Я"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Не під’єднано."</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Немає мережі"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Wi-Fi вимкнено"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Екран Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Немає з’єднання з екраном Wi-Fi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi вимкнено"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Відображення Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Відсутнє з’єднання для відображення Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яскравість"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТО"</string>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index dcc472a..ff263e2 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi một vạch."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi hai vạch."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi ba vạch."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Tín hiệu WiFi đầy đủ."</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Tín hiệu Wi-Fi đã đầy."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Không có WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX một vạch."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX hai vạch."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Cài đặt"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Thời gian"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Tôi"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Chưa được kết nối"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Không có mạng nào"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"Đã tắt Wifi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Màn hình Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Không kết nối màn hình Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Tắt Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Hiển thị Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Không có kết nối hiển thị Wi-Fi nào"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Độ sáng"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"TỰ ĐỘNG"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index ded22f4..a743c9e 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi 信号强度为 1 格。"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi 信号强度为 2 格。"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi 信号强度为 3 格。"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 信号满格。"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi 信号强度为满格。"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"无 WiMAX 信号。"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 信号强度为一格。"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 信号强度为两格。"</string>
@@ -154,14 +154,14 @@
<string name="start_dreams" msgid="870400522982252717">"入梦"</string>
<string name="ethernet_label" msgid="7967563676324087464">"以太网"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飞行模式"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"正在充电 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
+ <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"正在充电:<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充电完成"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"蓝牙"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"蓝牙(<xliff:g id="NUMBER">%d</xliff:g> 台设备)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"关闭蓝牙"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"蓝牙已关闭"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"自动旋转"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"已锁定旋转功能"</string>
+ <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"屏幕方向已锁定"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"输入法"</string>
<string name="quick_settings_location_label" msgid="3292451598267467545">"位置信息"</string>
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"媒体设备"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"设置"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"时间"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"我"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"未连接"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"无网络"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"关闭 Wi-Fi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"W-Fi 显示设备"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"没有 Wi-Fi 显示设备连接"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"已关闭 Wi-Fi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi 显示设备"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"无 Wi-Fi 显示设备连接"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自动"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index e1c032c..c71e2f6 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi 訊號一格。"</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi 訊號兩格。"</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi 訊號三格。"</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 訊號滿格。"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi 訊號滿格。"</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"沒有 WiMAX 訊號。"</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 訊號一格。"</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 訊號兩格。"</string>
@@ -170,11 +170,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"設定"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"時間"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"我"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"WiFi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"未連線"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"沒有網路"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"關閉 WiFi"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"WiFi 顯示裝置"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"未連接 WiFi 顯示裝置"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"關閉 WiFi"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"WiFi 顯示器"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"無 WiFi 顯示器連線"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自動"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index b1316bf..64a3699 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -104,7 +104,7 @@
<string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"I-Wi-Fi umugqaa owodwa."</string>
<string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"I-Wi-Fi imigqaa emibili."</string>
<string name="accessibility_wifi_three_bars" msgid="928322805193265041">"I-Wi-Fi imigqaa emithathu."</string>
- <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"i-signal ye-WiFi igcwele"</string>
+ <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Uphawu lwe-Wi-Fi igcwele."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"Ayikho i-WiMAX."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Ibha eyodwa ye-WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Amabha amabili we-WiMAX."</string>
@@ -168,11 +168,12 @@
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Izilungiselelo"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Isikhathi"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Mina"</string>
- <string name="quick_settings_wifi_label" msgid="4393429107095001520">"I-WiFi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"I-Wi-Fi"</string>
+ <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Akuxhunyiwe"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ayikho inethiwekhi"</string>
- <string name="quick_settings_wifi_off_label" msgid="3343111275022978538">"I-Wifi ivaliwe"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Ukubuka kwe-Wifi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Alukho uxhumo lokubonisa le-Wifi"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"I-Wi-Fi icimile"</string>
+ <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Ukusboniswa kwe-Wi-"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="7834964244709912066">"Alukho uxhumo lokubonisa le-Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ukugqama"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OKUZENZAKALELAYO"</string>
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 46c3903..62289fb 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -146,10 +146,10 @@
<dimen name="navbar_search_panel_height">230dip</dimen>
<!-- Height of the draggable handle at the bottom of the phone notification panel -->
- <dimen name="close_handle_height">32dp</dimen>
+ <dimen name="close_handle_height">36dp</dimen>
- <!-- Amount of close_handle that will not overlap the notification list -->
- <dimen name="close_handle_underlap">18dp</dimen>
+ <!-- Amount of close_handle that will NOT overlap the notification list -->
+ <dimen name="close_handle_underlap">32dp</dimen>
<!-- Height of the notification panel header bar -->
<dimen name="notification_panel_header_height">48dp</dimen>
@@ -189,4 +189,7 @@
<!-- The padding between each tile within the QuickSettings layout -->
<dimen name="quick_settings_cell_gap">4dp</dimen>
+ <!-- Minimum fraction of the screen that should be taken up by the notification panel.
+ Not used at this screen size. -->
+ <item type="dimen" name="notification_panel_min_height_frac">0%</item>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
index b0879fc..f71f554 100644
--- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
@@ -72,7 +72,7 @@ public class SearchPanelView extends FrameLayout implements
private void startAssistActivity() {
// Close Recent Apps if needed
- mBar.animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_SEARCH_PANEL);
+ mBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_SEARCH_PANEL);
// Launch Assist
Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
.getAssistIntent(mContext, UserHandle.USER_CURRENT);
@@ -220,7 +220,7 @@ public class SearchPanelView extends FrameLayout implements
public void hide(boolean animate) {
if (mBar != null) {
// This will indirectly cause show(false, ...) to get called
- mBar.animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ mBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
} else {
setVisibility(View.INVISIBLE);
}
diff --git a/packages/SystemUI/src/com/android/systemui/Somnambulator.java b/packages/SystemUI/src/com/android/systemui/Somnambulator.java
index bd87238..8e3ce3b 100644
--- a/packages/SystemUI/src/com/android/systemui/Somnambulator.java
+++ b/packages/SystemUI/src/com/android/systemui/Somnambulator.java
@@ -20,15 +20,33 @@ import android.app.Activity;
import android.content.Intent;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.service.dreams.Dream;
import android.service.dreams.IDreamManager;
import android.util.Slog;
public class Somnambulator extends Activity {
+ public static final String TAG = "Somnambulator";
+
+ public static final int DEFAULT_SCREENSAVER_ENABLED = 1;
+ public static final int DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK = 1;
public Somnambulator() {
}
-
+
+ private boolean isScreenSaverEnabled() {
+ return Settings.Secure.getIntForUser(getContentResolver(),
+ Settings.Secure.SCREENSAVER_ENABLED, DEFAULT_SCREENSAVER_ENABLED,
+ UserHandle.USER_CURRENT) != 0;
+ }
+
+ private boolean isScreenSaverActivatedOnDock() {
+ return Settings.Secure.getIntForUser(getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
+ DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK, UserHandle.USER_CURRENT) != 0;
+ }
+
@Override
public void onStart() {
super.onStart();
@@ -45,14 +63,20 @@ public class Somnambulator extends Activity {
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.start_dreams));
setResult(RESULT_OK, resultIntent);
} else {
- IDreamManager somnambulist = IDreamManager.Stub.asInterface(
- ServiceManager.checkService(Dream.DREAM_SERVICE));
- if (somnambulist != null) {
- try {
- Slog.v("Somnambulator", "Dreaming by user request.");
- somnambulist.dream();
- } catch (RemoteException e) {
- // fine, stay asleep then
+ boolean docked = launchIntent.hasCategory(Intent.CATEGORY_DESK_DOCK);
+
+ if (docked && !(isScreenSaverEnabled() && isScreenSaverActivatedOnDock())) {
+ Slog.i(TAG, "Dreams currently disabled for docks.");
+ } else {
+ IDreamManager somnambulist = IDreamManager.Stub.asInterface(
+ ServiceManager.checkService(Dream.DREAM_SERVICE));
+ if (somnambulist != null) {
+ try {
+ Slog.v(TAG, "Dreaming on " + (docked ? "dock insertion" : "user request"));
+ somnambulist.dream();
+ } catch (RemoteException e) {
+ // fine, stay asleep then
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index d8bbee9..d7b1b35 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -32,6 +32,7 @@ import com.android.systemui.recent.TaskDescription;
import com.android.systemui.statusbar.policy.NotificationRowLayout;
import com.android.systemui.statusbar.tablet.StatusBarPanel;
+import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.app.ActivityOptions;
import android.app.KeyguardManager;
@@ -184,7 +185,7 @@ public abstract class BaseStatusBar extends SystemUI implements
if (isActivity && handled) {
// close the shade if it was open
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
visibilityChanged(false);
}
return handled;
@@ -261,12 +262,7 @@ public abstract class BaseStatusBar extends SystemUI implements
));
}
- // XXX: this is currently broken and will always return 0, but should start working at some point
- try {
- mCurrentUserId = ActivityManagerNative.getDefault().getCurrentUser().id;
- } catch (RemoteException e) {
- Log.v(TAG, "Couldn't get current user ID; guessing it's 0", e);
- }
+ mCurrentUserId = ActivityManager.getCurrentUser();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_USER_SWITCHED);
@@ -361,7 +357,7 @@ public abstract class BaseStatusBar extends SystemUI implements
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.notification_inspect_item) {
startApplicationDetailsActivity(packageNameF);
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
} else {
return false;
}
@@ -793,7 +789,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
// close the shade if it was open
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
visibilityChanged(false);
// If this click was on the intruder alert, hide that instead
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index 39e49b8..752bb0c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -46,17 +46,16 @@ public class CommandQueue extends IStatusBar.Stub {
private static final int MSG_REMOVE_NOTIFICATION = 4 << MSG_SHIFT;
private static final int MSG_DISABLE = 5 << MSG_SHIFT;
private static final int MSG_EXPAND_NOTIFICATIONS = 6 << MSG_SHIFT;
- private static final int MSG_COLLAPSE_NOTIFICATIONS = 7 << MSG_SHIFT;
- private static final int MSG_EXPAND_QUICK_SETTINGS = 8 << MSG_SHIFT;
- private static final int MSG_COLLAPSE_QUICK_SETTINGS = 9 << MSG_SHIFT;
- private static final int MSG_SET_SYSTEMUI_VISIBILITY = 10 << MSG_SHIFT;
- private static final int MSG_TOP_APP_WINDOW_CHANGED = 11 << MSG_SHIFT;
- private static final int MSG_SHOW_IME_BUTTON = 12 << MSG_SHIFT;
- private static final int MSG_SET_HARD_KEYBOARD_STATUS = 13 << MSG_SHIFT;
- private static final int MSG_TOGGLE_RECENT_APPS = 14 << MSG_SHIFT;
- private static final int MSG_PRELOAD_RECENT_APPS = 15 << MSG_SHIFT;
- private static final int MSG_CANCEL_PRELOAD_RECENT_APPS = 16 << MSG_SHIFT;
- private static final int MSG_SET_NAVIGATION_ICON_HINTS = 17 << MSG_SHIFT;
+ private static final int MSG_COLLAPSE_PANELS = 7 << MSG_SHIFT;
+ private static final int MSG_EXPAND_SETTINGS = 8 << MSG_SHIFT;
+ private static final int MSG_SET_SYSTEMUI_VISIBILITY = 9 << MSG_SHIFT;
+ private static final int MSG_TOP_APP_WINDOW_CHANGED = 10 << MSG_SHIFT;
+ private static final int MSG_SHOW_IME_BUTTON = 11 << MSG_SHIFT;
+ private static final int MSG_SET_HARD_KEYBOARD_STATUS = 12 << MSG_SHIFT;
+ private static final int MSG_TOGGLE_RECENT_APPS = 13 << MSG_SHIFT;
+ private static final int MSG_PRELOAD_RECENT_APPS = 14 << MSG_SHIFT;
+ private static final int MSG_CANCEL_PRELOAD_RECENT_APPS = 15 << MSG_SHIFT;
+ private static final int MSG_SET_NAVIGATION_ICON_HINTS = 16 << MSG_SHIFT;
public static final int FLAG_EXCLUDE_NONE = 0;
public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
@@ -86,10 +85,9 @@ public class CommandQueue extends IStatusBar.Stub {
public void updateNotification(IBinder key, StatusBarNotification notification);
public void removeNotification(IBinder key);
public void disable(int state);
- public void animateExpandNotifications();
- public void animateCollapseNotifications(int flags);
- public void animateExpandQuickSettings();
- public void animateCollapseQuickSettings();
+ public void animateExpandNotificationsPanel();
+ public void animateCollapsePanels(int flags);
+ public void animateExpandSettingsPanel();
public void setSystemUiVisibility(int vis, int mask);
public void topAppWindowChanged(boolean visible);
public void setImeWindowStatus(IBinder token, int vis, int backDisposition);
@@ -154,31 +152,24 @@ public class CommandQueue extends IStatusBar.Stub {
}
}
- public void animateExpandNotifications() {
+ public void animateExpandNotificationsPanel() {
synchronized (mList) {
mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS);
mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS);
}
}
- public void animateCollapseNotifications() {
+ public void animateCollapsePanels() {
synchronized (mList) {
- mHandler.removeMessages(MSG_COLLAPSE_NOTIFICATIONS);
- mHandler.sendEmptyMessage(MSG_COLLAPSE_NOTIFICATIONS);
+ mHandler.removeMessages(MSG_COLLAPSE_PANELS);
+ mHandler.sendEmptyMessage(MSG_COLLAPSE_PANELS);
}
}
- public void animateExpandQuickSettings() {
+ public void animateExpandSettingsPanel() {
synchronized (mList) {
- mHandler.removeMessages(MSG_EXPAND_QUICK_SETTINGS);
- mHandler.sendEmptyMessage(MSG_EXPAND_QUICK_SETTINGS);
- }
- }
-
- public void animateCollapseQuickSettings() {
- synchronized (mList) {
- mHandler.removeMessages(MSG_COLLAPSE_QUICK_SETTINGS);
- mHandler.sendEmptyMessage(MSG_COLLAPSE_QUICK_SETTINGS);
+ mHandler.removeMessages(MSG_EXPAND_SETTINGS);
+ mHandler.sendEmptyMessage(MSG_EXPAND_SETTINGS);
}
}
@@ -289,16 +280,13 @@ public class CommandQueue extends IStatusBar.Stub {
mCallbacks.disable(msg.arg1);
break;
case MSG_EXPAND_NOTIFICATIONS:
- mCallbacks.animateExpandNotifications();
- break;
- case MSG_COLLAPSE_NOTIFICATIONS:
- mCallbacks.animateCollapseNotifications(0);
+ mCallbacks.animateExpandNotificationsPanel();
break;
- case MSG_EXPAND_QUICK_SETTINGS:
- mCallbacks.animateExpandQuickSettings();
+ case MSG_COLLAPSE_PANELS:
+ mCallbacks.animateCollapsePanels(0);
break;
- case MSG_COLLAPSE_QUICK_SETTINGS:
- mCallbacks.animateCollapseQuickSettings();
+ case MSG_EXPAND_SETTINGS:
+ mCallbacks.animateExpandSettingsPanel();
break;
case MSG_SET_SYSTEMUI_VISIBILITY:
mCallbacks.setSystemUiVisibility(msg.arg1, msg.arg2);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index 5e810ba..dbc55c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
+import android.os.UserHandle;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Slog;
@@ -165,8 +166,12 @@ public class StatusBarIconView extends AnimatedImageView {
if (icon.iconPackage != null) {
try {
- r = context.getPackageManager().getResourcesForApplicationAsUser(icon.iconPackage,
- icon.user.getIdentifier());
+ int userId = icon.user.getIdentifier();
+ if (userId == UserHandle.USER_ALL) {
+ userId = UserHandle.USER_OWNER;
+ }
+ r = context.getPackageManager()
+ .getResourcesForApplicationAsUser(icon.iconPackage, userId);
} catch (PackageManager.NameNotFoundException ex) {
Slog.e(TAG, "Icon package not found: " + icon.iconPackage);
return null;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CloseDragHandle.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CloseDragHandle.java
index ba64282..ee01489 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CloseDragHandle.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CloseDragHandle.java
@@ -36,7 +36,9 @@ public class CloseDragHandle extends LinearLayout {
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
- if (event.getAction() != MotionEvent.ACTION_DOWN) {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ setPressed(true);
+ } else {
mService.interceptTouchEvent(event);
}
return true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 9c978d5..c9ec481 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -21,19 +21,28 @@ import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.view.View;
+
import com.android.systemui.R;
public class NotificationPanelView extends PanelView {
Drawable mHandleBar;
float mHandleBarHeight;
+ View mHandleView;
public NotificationPanelView(Context context, AttributeSet attrs) {
super(context, attrs);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
- Resources resources = context.getResources();
+ Resources resources = getContext().getResources();
mHandleBar = resources.getDrawable(R.drawable.status_bar_close);
mHandleBarHeight = resources.getDimension(R.dimen.close_handle_height);
+ mHandleView = findViewById(R.id.handle);
}
@Override
@@ -44,19 +53,24 @@ public class NotificationPanelView extends PanelView {
super.fling(vel, always);
}
+ // We draw the handle ourselves so that it's always glued to the bottom of the window.
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (changed) {
- mHandleBar.setBounds(0, 0, getWidth(), (int) mHandleBarHeight);
+ final int pl = getPaddingLeft();
+ final int pr = getPaddingRight();
+ mHandleBar.setBounds(pl, 0, getWidth() - pr, (int) mHandleBarHeight);
}
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
- canvas.translate(0, getHeight() - mHandleBarHeight);
+ final int off = (int) (getHeight() - mHandleBarHeight - getPaddingBottom());
+ canvas.translate(0, off);
+ mHandleBar.setState(mHandleView.getDrawableState());
mHandleBar.draw(canvas);
- canvas.translate(0, -getHeight() + mHandleBarHeight);
+ canvas.translate(0, -off);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 45a107d..d94dbe4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -220,6 +220,7 @@ public class PanelView extends FrameLayout {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mTracking = true;
+ mHandleView.setPressed(true);
mInitialTouchY = y;
mVelocityTracker = VelocityTracker.obtain();
trackMovement(event);
@@ -239,6 +240,7 @@ public class PanelView extends FrameLayout {
case MotionEvent.ACTION_CANCEL:
mFinalTouchY = y;
mTracking = false;
+ mHandleView.setPressed(false);
mBar.onTrackingStopped(PanelView.this);
trackMovement(event);
mVelocityTracker.computeCurrentVelocity(1000);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index d72632f..4f0d113 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -33,6 +33,7 @@ import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.PixelFormat;
+import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -104,7 +105,8 @@ public class PhoneStatusBar extends BaseStatusBar {
= "com.android.internal.policy.statusbar.START";
private static final int MSG_OPEN_NOTIFICATION_PANEL = 1000;
- private static final int MSG_CLOSE_NOTIFICATION_PANEL = 1001;
+ private static final int MSG_CLOSE_PANELS = 1001;
+ private static final int MSG_OPEN_SETTINGS_PANEL = 1002;
// 1020-1030 reserved for BaseStatusBar
// will likely move to a resource or other tunable param at some point
@@ -142,6 +144,7 @@ public class PhoneStatusBar extends BaseStatusBar {
int mIconSize = -1;
int mIconHPadding = -1;
Display mDisplay;
+ Point mCurrentDisplaySize = new Point();
IDreamManager mDreamManager;
@@ -168,10 +171,9 @@ public class PhoneStatusBar extends BaseStatusBar {
PanelView mNotificationPanel; // the sliding/resizing panel within the notification window
ScrollView mScrollView;
View mExpandedContents;
- final Rect mNotificationPanelBackgroundPadding = new Rect();
int mNotificationPanelGravity;
int mNotificationPanelMarginBottomPx, mNotificationPanelMarginPx;
- int mNotificationPanelMinHeight;
+ float mNotificationPanelMinHeightFrac;
boolean mNotificationPanelIsFullScreenWidth;
TextView mNotificationPanelDebugText;
@@ -296,7 +298,7 @@ public class PhoneStatusBar extends BaseStatusBar {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (mExpandedVisible && !mAnimating) {
- animateCollapseNotifications();
+ animateCollapsePanels();
}
}
return mStatusBarWindow.onTouchEvent(event);
@@ -778,7 +780,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
if (CLOSE_PANEL_WHEN_EMPTIED && mNotificationData.size() == 0 && !mAnimating) {
- animateCollapseNotifications();
+ animateCollapsePanels();
}
}
@@ -1051,7 +1053,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
if ((state & StatusBarManager.DISABLE_EXPAND) != 0) {
- animateCollapseNotifications();
+ animateCollapsePanels();
}
}
@@ -1111,10 +1113,13 @@ public class PhoneStatusBar extends BaseStatusBar {
super.handleMessage(m);
switch (m.what) {
case MSG_OPEN_NOTIFICATION_PANEL:
- animateExpandNotifications();
+ animateExpandNotificationsPanel();
break;
- case MSG_CLOSE_NOTIFICATION_PANEL:
- animateCollapseNotifications();
+ case MSG_OPEN_SETTINGS_PANEL:
+ animateExpandSettingsPanel();
+ break;
+ case MSG_CLOSE_PANELS:
+ animateCollapsePanels();
break;
case MSG_SHOW_INTRUDER:
setIntruderAlertVisibility(true);
@@ -1167,11 +1172,11 @@ public class PhoneStatusBar extends BaseStatusBar {
visibilityChanged(true);
}
- public void animateCollapseNotifications() {
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ public void animateCollapsePanels() {
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
- public void animateCollapseNotifications(int flags) {
+ public void animateCollapsePanels(int flags) {
if (SPEW) {
Slog.d(TAG, "animateCollapse():"
+ " mExpandedVisible=" + mExpandedVisible
@@ -1196,7 +1201,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpandNotifications() {
+ public void animateExpandNotificationsPanel() {
if (SPEW) Slog.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
return ;
@@ -1208,7 +1213,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpandQuickSettings() {
+ public void animateExpandSettingsPanel() {
if (SPEW) Slog.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
return;
@@ -1352,7 +1357,7 @@ public class PhoneStatusBar extends BaseStatusBar {
if (0 != (diff & View.SYSTEM_UI_FLAG_LOW_PROFILE)) {
final boolean lightsOut = (0 != (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE));
if (lightsOut) {
- animateCollapseNotifications();
+ animateCollapsePanels();
if (mTicking) {
mTicker.halt();
}
@@ -1640,12 +1645,17 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void updateExpandedViewPos(int thingy) {
- // TODO
if (DEBUG) Slog.v(TAG, "updateExpandedViewPos");
+
+ // on larger devices, the notification panel is propped open a bit
+ mNotificationPanel.setMinimumHeight(
+ (int)(mNotificationPanelMinHeightFrac * mCurrentDisplaySize.y));
+
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams();
lp.gravity = mNotificationPanelGravity;
lp.leftMargin = mNotificationPanelMarginPx;
mNotificationPanel.setLayoutParams(lp);
+
lp = (FrameLayout.LayoutParams) mSettingsPanel.getLayoutParams();
lp.gravity = mSettingsPanelGravity;
lp.rightMargin = mNotificationPanelMarginPx;
@@ -1678,7 +1688,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
}
if (snapshot.isEmpty()) {
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
return;
}
new Thread(new Runnable() {
@@ -1729,7 +1739,7 @@ public class PhoneStatusBar extends BaseStatusBar {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
}, totalDelay + 225);
}
@@ -1751,7 +1761,7 @@ public class PhoneStatusBar extends BaseStatusBar {
v.getContext().startActivityAsUser(new Intent(Settings.ACTION_SETTINGS)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
new UserHandle(UserHandle.USER_CURRENT));
- animateCollapseNotifications();
+ animateCollapsePanels();
}
};
@@ -1767,7 +1777,7 @@ public class PhoneStatusBar extends BaseStatusBar {
flags |= CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL;
}
}
- animateCollapseNotifications(flags);
+ animateCollapsePanels(flags);
}
else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
// no waiting!
@@ -1777,6 +1787,8 @@ public class PhoneStatusBar extends BaseStatusBar {
if (DEBUG) {
Slog.v(TAG, "configuration changed: " + mContext.getResources().getConfiguration());
}
+ mDisplay.getSize(mCurrentDisplaySize);
+
updateResources();
repositionNavigationBar();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
@@ -1792,7 +1804,7 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void userSwitched(int newUserId) {
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
- animateCollapseNotifications();
+ animateCollapsePanels();
updateNotificationIcons();
}
@@ -1885,27 +1897,16 @@ public class PhoneStatusBar extends BaseStatusBar {
if (mSettingsPanelGravity <= 0) {
mSettingsPanelGravity = Gravity.RIGHT | Gravity.TOP;
}
- getNinePatchPadding(res.getDrawable(R.drawable.notification_panel_bg), mNotificationPanelBackgroundPadding);
- final int notificationPanelDecorationHeight =
- res.getDimensionPixelSize(R.dimen.notification_panel_padding_top)
- + res.getDimensionPixelSize(R.dimen.notification_panel_header_height)
- + mNotificationPanelBackgroundPadding.top
- + mNotificationPanelBackgroundPadding.bottom;
- mNotificationPanelMinHeight =
- notificationPanelDecorationHeight
- + res.getDimensionPixelSize(R.dimen.close_handle_underlap);
mCarrierLabelHeight = res.getDimensionPixelSize(R.dimen.carrier_label_height);
mNotificationHeaderHeight = res.getDimensionPixelSize(R.dimen.notification_panel_header_height);
- if (false) Slog.v(TAG, "updateResources");
- }
-
- private static void getNinePatchPadding(Drawable d, Rect outPadding) {
- if (d instanceof NinePatchDrawable) {
- NinePatchDrawable ninePatch = (NinePatchDrawable) d;
- ninePatch.getPadding(outPadding);
+ mNotificationPanelMinHeightFrac = res.getFraction(R.dimen.notification_panel_min_height_frac, 1, 1);
+ if (mNotificationPanelMinHeightFrac < 0f || mNotificationPanelMinHeightFrac > 1f) {
+ mNotificationPanelMinHeightFrac = 0f;
}
+
+ if (false) Slog.v(TAG, "updateResources");
}
//
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
index 7077018..35b9f85 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
@@ -31,6 +31,7 @@ import android.content.IntentFilter;
import android.content.Loader;
import android.content.res.Resources;
import android.database.Cursor;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import android.hardware.display.DisplayManager;
@@ -40,6 +41,7 @@ import android.os.Handler;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.view.LayoutInflater;
@@ -156,10 +158,13 @@ class QuickSettings {
bluetoothController.addStateChangedCallback(mModel);
batteryController.addStateChangedCallback(mModel);
locationController.addStateChangedCallback(mModel);
- RotationPolicy.registerRotationPolicyListener(mContext, mRotationPolicyListener);
+ RotationPolicy.registerRotationPolicyListener(mContext, mRotationPolicyListener,
+ UserHandle.USER_ALL);
}
private void queryForUserInformation() {
+ System.out.println("queryForUserInformation");
+
Uri userContactUri = Uri.withAppendedPath(
ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
@@ -184,9 +189,11 @@ class QuickSettings {
@Override
public void onLoadComplete(Loader<Cursor> loader,
Cursor cursor) {
+ UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
if (cursor != null && cursor.moveToFirst()) {
String name = cursor.getString(0); // DISPLAY_NAME
- mModel.setUserTileInfo(name, null);
+ BitmapDrawable d = new BitmapDrawable(userManager.getUserIcon(userManager.getUserHandle()));
+ mModel.setUserTileInfo(name, d);
/*
byte[] photoData = cursor.getBlob(0);
Bitmap b =
@@ -228,7 +235,7 @@ class QuickSettings {
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
- getService().animateCollapseNotifications();
+ getService().animateCollapsePanels();
}
private void addUserTiles(ViewGroup parent, LayoutInflater inflater) {
@@ -248,10 +255,11 @@ class QuickSettings {
@Override
public void refreshView(QuickSettingsTileView view, State state) {
UserState us = (UserState) state;
+ ImageView iv = (ImageView) view.findViewById(R.id.user_imageview);
TextView tv = (TextView) view.findViewById(R.id.user_textview);
tv.setText(state.label);
if (us.avatar != null) {
- tv.setCompoundDrawables(null, us.avatar, null, null);
+ iv.setImageDrawable(us.avatar);
}
}
});
@@ -290,6 +298,13 @@ class QuickSettings {
startSettingsActivity(android.provider.Settings.ACTION_SETTINGS);
}
});
+ mModel.addSettingsTile(settingsTile, new QuickSettingsModel.RefreshCallback() {
+ @Override
+ public void refreshView(QuickSettingsTileView view, State state) {
+ TextView tv = (TextView) view.findViewById(R.id.settings_tileview);
+ tv.setText(state.label);
+ }
+ });
parent.addView(settingsTile);
mDynamicSpannedTiles.add(settingsTile);
}
@@ -418,6 +433,7 @@ class QuickSettings {
public void refreshView(QuickSettingsTileView view, State state) {
TextView tv = (TextView) view.findViewById(R.id.airplane_mode_textview);
tv.setCompoundDrawablesWithIntrinsicBounds(0, state.iconId, 0, 0);
+ tv.setText(state.label);
}
});
parent.addView(airplaneTile);
@@ -476,6 +492,7 @@ class QuickSettings {
public void refreshView(QuickSettingsTileView view, State state) {
TextView tv = (TextView) view.findViewById(R.id.brightness_textview);
tv.setCompoundDrawablesWithIntrinsicBounds(0, state.iconId, 0, 0);
+ tv.setText(state.label);
dismissBrightnessDialog(mBrightnessDialogShortTimeout);
}
});
@@ -614,6 +631,9 @@ class QuickSettings {
void updateResources() {
Resources r = mContext.getResources();
+ // Update the model
+ mModel.updateResources();
+
// Update the User, Time, and Settings tiles spans, and reset everything else
int span = r.getInteger(R.integer.quick_settings_user_time_settings_tile_span);
for (QuickSettingsTileView v : mDynamicSpannedTiles) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
index 04633bf..5adfeb1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
@@ -29,6 +29,7 @@ import android.database.ContentObserver;
import android.graphics.drawable.Drawable;
import android.hardware.display.WifiDisplayStatus;
import android.os.Handler;
+import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.text.TextUtils;
@@ -94,6 +95,16 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
};
+ /** Broadcast receiver to act on user switches to update visuals of per-user state */
+ private BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) {
+ onUserSwitched(intent);
+ }
+ }
+ };
+
/** ContentObserver to determine the next alarm */
private class NextAlarmObserver extends ContentObserver {
public NextAlarmObserver(Handler handler) {
@@ -188,6 +199,10 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
private RefreshCallback mBugreportCallback;
private State mBugreportState = new State();
+ private QuickSettingsTileView mSettingsTile;
+ private RefreshCallback mSettingsCallback;
+ private State mSettingsState = new State();
+
public QuickSettingsModel(Context context) {
mContext = context;
mHandler = new Handler();
@@ -199,6 +214,29 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
IntentFilter alarmIntentFilter = new IntentFilter();
alarmIntentFilter.addAction(Intent.ACTION_ALARM_CHANGED);
context.registerReceiver(mAlarmIntentReceiver, alarmIntentFilter);
+
+ IntentFilter userSwitchedFilter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
+ context.registerReceiver(mUserSwitchedReceiver, userSwitchedFilter);
+ }
+
+ void updateResources() {
+ refreshSettingsTile();
+ refreshBatteryTile();
+ refreshBluetoothTile();
+ refreshBrightnessTile();
+ refreshRotationLockTile();
+ }
+
+ // Settings
+ void addSettingsTile(QuickSettingsTileView view, RefreshCallback cb) {
+ mSettingsTile = view;
+ mSettingsCallback = cb;
+ refreshSettingsTile();
+ }
+ void refreshSettingsTile() {
+ Resources r = mContext.getResources();
+ mSettingsState.label = r.getString(R.string.quick_settings_settings_label);
+ mSettingsCallback.refreshView(mSettingsTile, mSettingsState);
}
// User
@@ -250,7 +288,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
});
mAirplaneModeCallback = cb;
- mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
+ int airplaneMode = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0);
+ onAirplaneModeChanged(airplaneMode != 0);
}
private void setAirplaneModeState(boolean enabled) {
// TODO: Sets the view to be "awaiting" if not already awaiting
@@ -273,6 +313,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mAirplaneModeState.iconId = (enabled ?
R.drawable.ic_qs_airplane_on :
R.drawable.ic_qs_airplane_off);
+ mAirplaneModeState.label = r.getString(R.string.quick_settings_airplane_mode_label);
mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
}
@@ -307,7 +348,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
Resources r = mContext.getResources();
mWifiState.enabled = enabled;
boolean wifiConnected = enabled && (wifiSignalIconId > 0) && (enabledDesc != null);
- boolean wifiNotConnected = enabled && (enabledDesc == null);
+ boolean wifiNotConnected = (wifiSignalIconId > 0) && (enabledDesc == null);
if (wifiConnected) {
mWifiState.iconId = wifiSignalIconId;
mWifiState.label = removeDoubleQuotes(enabledDesc);
@@ -377,6 +418,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
mBluetoothCallback.refreshView(mBluetoothTile, mBluetoothState);
}
+ void refreshBluetoothTile() {
+ if (mBluetoothTile != null) {
+ onBluetoothStateChange(mBluetoothState.enabled);
+ }
+ }
// Battery
void addBatteryTile(QuickSettingsTileView view, RefreshCallback cb) {
@@ -391,6 +437,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mBatteryState.pluggedIn = pluggedIn;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
+ void refreshBatteryTile() {
+ mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
+ }
// Location
void addLocationTile(QuickSettingsTileView view, RefreshCallback cb) {
@@ -544,6 +593,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mRotationLockCallback.refreshView(mRotationLockTile, mRotationLockState);
}
}
+ void refreshRotationLockTile() {
+ if (mRotationLockTile != null) {
+ onRotationLockChanged();
+ }
+ }
// Brightness
void addBrightnessTile(QuickSettingsTileView view, RefreshCallback cb) {
@@ -553,6 +607,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
@Override
public void onBrightnessLevelChanged() {
+ Resources r = mContext.getResources();
int mode = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
@@ -561,7 +616,19 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mBrightnessState.iconId = mBrightnessState.autoBrightness
? R.drawable.ic_qs_brightness_auto_on
: R.drawable.ic_qs_brightness_auto_off;
+ mBrightnessState.label = r.getString(R.string.quick_settings_brightness_label);
mBrightnessCallback.refreshView(mBrightnessTile, mBrightnessState);
}
+ void refreshBrightnessTile() {
+ onBrightnessLevelChanged();
+ }
+
+ // User switch: need to update visuals of all tiles known to have per-user state
+ void onUserSwitched(Intent intent) {
+ onRotationLockChanged();
+ onBrightnessLevelChanged();
+ onNextAlarmChanged();
+ onBugreportChanged();
+ }
-} \ No newline at end of file
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
index 2ed450dd..f9d9dac0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
@@ -20,6 +20,8 @@ import android.animation.LayoutTransition;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -37,6 +39,10 @@ public class SettingsPanelView extends PanelView {
private QuickSettings mQS;
private QuickSettingsContainerView mQSContainer;
+ Drawable mHandleBar;
+ float mHandleBarHeight;
+ View mHandleView;
+
public SettingsPanelView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -47,6 +53,11 @@ public class SettingsPanelView extends PanelView {
mQSContainer = (QuickSettingsContainerView) findViewById(R.id.quick_settings_container);
mQS = new QuickSettings(getContext(), mQSContainer);
+
+ Resources resources = getContext().getResources();
+ mHandleBar = resources.getDrawable(R.drawable.status_bar_close);
+ mHandleBarHeight = resources.getDimension(R.dimen.close_handle_height);
+ mHandleView = findViewById(R.id.handle);
}
@Override
@@ -95,4 +106,25 @@ public class SettingsPanelView extends PanelView {
mQS.setService(phoneStatusBar);
}
}
+
+ // We draw the handle ourselves so that it's always glued to the bottom of the window.
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ super.onLayout(changed, left, top, right, bottom);
+ if (changed) {
+ final int pl = getPaddingLeft();
+ final int pr = getPaddingRight();
+ mHandleBar.setBounds(pl, 0, getWidth() - pr, (int) mHandleBarHeight);
+ }
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ super.draw(canvas);
+ final int off = (int) (getHeight() - mHandleBarHeight - getPaddingBottom());
+ canvas.translate(0, off);
+ mHandleBar.setState(mHandleView.getDrawableState());
+ mHandleBar.draw(canvas);
+ canvas.translate(0, -off);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 85b91d1..0176f42 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -70,7 +70,7 @@ public class StatusBarWindowView extends FrameLayout
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
if (!down) {
- mService.animateCollapseNotifications();
+ mService.animateCollapsePanels();
}
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AutoRotateController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AutoRotateController.java
index 109395c..7d58032 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AutoRotateController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AutoRotateController.java
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.policy;
import com.android.internal.view.RotationPolicy;
import android.content.Context;
+import android.os.UserHandle;
import android.widget.CompoundButton;
public final class AutoRotateController implements CompoundButton.OnCheckedChangeListener {
@@ -44,7 +45,8 @@ public final class AutoRotateController implements CompoundButton.OnCheckedChang
mCheckbox.setOnCheckedChangeListener(this);
- RotationPolicy.registerRotationPolicyListener(context, mRotationPolicyListener);
+ RotationPolicy.registerRotationPolicyListener(context, mRotationPolicyListener,
+ UserHandle.USER_ALL);
updateState();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
index 73d1c7c..b431287 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
@@ -204,14 +204,14 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
// We exclusively handle the back key by hiding this panel.
case KeyEvent.KEYCODE_BACK: {
if (event.getAction() == KeyEvent.ACTION_UP) {
- mBar.animateCollapseNotifications();
+ mBar.animateCollapsePanels();
}
return true;
}
// We react to the home key but let the system handle it.
case KeyEvent.KEYCODE_HOME: {
if (event.getAction() == KeyEvent.ACTION_UP) {
- mBar.animateCollapseNotifications();
+ mBar.animateCollapsePanels();
}
} break;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.java
index ab4ef75..194f1f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.java
@@ -112,7 +112,7 @@ public class SettingsView extends LinearLayout implements View.OnClickListener {
private void onClickNetwork() {
getContext().startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
- getStatusBarManager().collapseNotifications();
+ getStatusBarManager().collapsePanels();
}
// Settings
@@ -121,7 +121,7 @@ public class SettingsView extends LinearLayout implements View.OnClickListener {
getContext().startActivityAsUser(new Intent(Settings.ACTION_SETTINGS)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
new UserHandle(UserHandle.USER_CURRENT));
- getStatusBarManager().collapseNotifications();
+ getStatusBarManager().collapsePanels();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index d1dd3c7..97451ae 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -740,7 +740,7 @@ public class TabletStatusBar extends BaseStatusBar implements
SharedPreferences.Editor editor = Prefs.edit(mContext);
editor.putBoolean(Prefs.DO_NOT_DISTURB_PREF, false);
editor.apply();
- animateCollapseNotifications();
+ animateCollapsePanels();
visibilityChanged(false);
}
});
@@ -821,7 +821,7 @@ public class TabletStatusBar extends BaseStatusBar implements
break;
case MSG_HIDE_CHROME:
if (DEBUG) Slog.d(TAG, "showing shadows (lights out)");
- animateCollapseNotifications();
+ animateCollapsePanels();
visibilityChanged(false);
mBarContents.setVisibility(View.GONE);
mShadow.setVisibility(View.VISIBLE);
@@ -907,7 +907,7 @@ public class TabletStatusBar extends BaseStatusBar implements
if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
if ((state & StatusBarManager.DISABLE_EXPAND) != 0) {
Slog.i(TAG, "DISABLE_EXPAND: yes");
- animateCollapseNotifications();
+ animateCollapsePanels();
visibilityChanged(false);
}
}
@@ -988,16 +988,16 @@ public class TabletStatusBar extends BaseStatusBar implements
mFeedbackIconArea.setVisibility(View.VISIBLE);
}
- public void animateExpandNotifications() {
+ public void animateExpandNotificationsPanel() {
mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PANEL);
mHandler.sendEmptyMessage(MSG_OPEN_NOTIFICATION_PANEL);
}
- public void animateCollapseNotifications() {
- animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
+ public void animateCollapsePanels() {
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
- public void animateCollapseNotifications(int flags) {
+ public void animateCollapsePanels(int flags) {
if ((flags & CommandQueue.FLAG_EXCLUDE_NOTIFICATION_PANEL) == 0) {
mHandler.removeMessages(MSG_CLOSE_NOTIFICATION_PANEL);
mHandler.sendEmptyMessage(MSG_CLOSE_NOTIFICATION_PANEL);
@@ -1022,12 +1022,7 @@ public class TabletStatusBar extends BaseStatusBar implements
}
@Override
- public void animateExpandQuickSettings() {
- // TODO: Implement when TabletStatusBar begins to be used.
- }
-
- @Override
- public void animateCollapseQuickSettings() {
+ public void animateExpandSettingsPanel() {
// TODO: Implement when TabletStatusBar begins to be used.
}
@@ -1299,7 +1294,7 @@ public class TabletStatusBar extends BaseStatusBar implements
mVT.computeCurrentVelocity(1000); // pixels per second
// require a little more oomph once we're already in peekaboo mode
if (mVT.getYVelocity() < -mNotificationFlingVelocity) {
- animateExpandNotifications();
+ animateExpandNotificationsPanel();
visibilityChanged(true);
hilite(false);
mVT.recycle();
@@ -1317,7 +1312,7 @@ public class TabletStatusBar extends BaseStatusBar implements
&& Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3)
// dragging off the bottom doesn't count
&& (int)event.getY() < v.getBottom()) {
- animateExpandNotifications();
+ animateExpandNotificationsPanel();
visibilityChanged(true);
v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
v.playSoundEffect(SoundEffectConstants.CLICK);
@@ -1493,7 +1488,7 @@ public class TabletStatusBar extends BaseStatusBar implements
} catch (RemoteException ex) {
// system process is dead if we're here.
}
- animateCollapseNotifications();
+ animateCollapsePanels();
visibilityChanged(false);
}
@@ -1509,7 +1504,7 @@ public class TabletStatusBar extends BaseStatusBar implements
flags |= CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL;
}
}
- animateCollapseNotifications(flags);
+ animateCollapsePanels(flags);
}
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
index fd2ee38..519d3c1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -61,11 +61,11 @@ public class TvStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpandNotifications() {
+ public void animateExpandNotificationsPanel() {
}
@Override
- public void animateCollapseNotifications(int flags) {
+ public void animateCollapsePanels(int flags) {
}
@Override
@@ -143,10 +143,6 @@ public class TvStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpandQuickSettings() {
- }
-
- @Override
- public void animateCollapseQuickSettings() {
+ public void animateExpandSettingsPanel() {
}
}
diff --git a/policy/src/com/android/internal/policy/impl/EnableAccessibilityController.java b/policy/src/com/android/internal/policy/impl/EnableAccessibilityController.java
new file mode 100644
index 0000000..889463b
--- /dev/null
+++ b/policy/src/com/android/internal/policy/impl/EnableAccessibilityController.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (C) 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.policy.impl;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.ServiceInfo;
+import android.media.AudioManager;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.os.Handler;
+import android.os.Message;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.util.MathUtils;
+import android.view.IWindowManager;
+import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.IAccessibilityManager;
+
+import com.android.internal.R;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class EnableAccessibilityController {
+
+ private static final int SPEAK_WARNING_DELAY_MILLIS = 2000;
+ private static final int ENABLE_ACCESSIBILITY_DELAY_MILLIS = 6000;
+
+ public static final int MESSAGE_SPEAK_WARNING = 1;
+ public static final int MESSAGE_SPEAK_ENABLE_CANCELED = 2;
+ public static final int MESSAGE_ENABLE_ACCESSIBILITY = 3;
+
+ private final Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message message) {
+ switch (message.what) {
+ case MESSAGE_SPEAK_WARNING: {
+ String text = mContext.getString(R.string.continue_to_enable_accessibility);
+ mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
+ } break;
+ case MESSAGE_SPEAK_ENABLE_CANCELED: {
+ String text = mContext.getString(R.string.enable_accessibility_canceled);
+ mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
+ } break;
+ case MESSAGE_ENABLE_ACCESSIBILITY: {
+ enableAccessibility();
+ mTone.play();
+ mTts.speak(mContext.getString(R.string.accessibility_enabled),
+ TextToSpeech.QUEUE_FLUSH, null);
+ } break;
+ }
+ }
+ };
+
+ private final IWindowManager mWindowManager = IWindowManager.Stub.asInterface(
+ ServiceManager.getService("window"));
+
+ private final IAccessibilityManager mAccessibilityManager = IAccessibilityManager
+ .Stub.asInterface(ServiceManager.getService("accessibility"));
+
+
+ private final Context mContext;
+ private final UserManager mUserManager;
+ private final TextToSpeech mTts;
+ private final Ringtone mTone;
+
+ private final float mTouchSlop;
+
+ private boolean mDestroyed;
+ private boolean mCanceled;
+
+ private float mFirstPointerDownX;
+ private float mFirstPointerDownY;
+ private float mSecondPointerDownX;
+ private float mSecondPointerDownY;
+
+ public EnableAccessibilityController(Context context) {
+ mContext = context;
+ mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ mTts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
+ @Override
+ public void onInit(int status) {
+ if (mDestroyed) {
+ mTts.shutdown();
+ }
+ }
+ });
+ mTone = RingtoneManager.getRingtone(context, Settings.System.DEFAULT_NOTIFICATION_URI);
+ mTone.setStreamType(AudioManager.STREAM_MUSIC);
+ mTouchSlop = context.getResources().getDimensionPixelSize(
+ R.dimen.accessibility_touch_slop);
+ }
+
+ public static boolean canEnableAccessibilityViaGesture(Context context) {
+ AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(context);
+ // Accessibility is enabled and there is an enabled speaking
+ // accessibility service, then we have nothing to do.
+ if (accessibilityManager.isEnabled()
+ && !accessibilityManager.getEnabledAccessibilityServiceList(
+ AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty()) {
+ return false;
+ }
+ // If the global gesture is enabled and there is a speaking service
+ // installed we are good to go, otherwise there is nothing to do.
+ return Settings.Global.getInt(context.getContentResolver(),
+ Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1
+ && !getInstalledSpeakingAccessibilityServices(context).isEmpty();
+ }
+
+ private static List<AccessibilityServiceInfo> getInstalledSpeakingAccessibilityServices(
+ Context context) {
+ List<AccessibilityServiceInfo> services = AccessibilityManager.getInstance(
+ context).getInstalledAccessibilityServiceList();
+ Iterator<AccessibilityServiceInfo> iterator = services.iterator();
+ while (iterator.hasNext()) {
+ AccessibilityServiceInfo service = iterator.next();
+ if ((service.feedbackType & AccessibilityServiceInfo.FEEDBACK_SPOKEN) == 0) {
+ iterator.remove();
+ }
+ }
+ return services;
+ }
+
+ public void onDestroy() {
+ mDestroyed = true;
+ }
+
+ public boolean onInterceptTouchEvent(MotionEvent event) {
+ if (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
+ && event.getPointerCount() == 2) {
+ mFirstPointerDownX = event.getX(0);
+ mFirstPointerDownY = event.getY(0);
+ mSecondPointerDownX = event.getX(1);
+ mSecondPointerDownY = event.getY(1);
+ mHandler.sendEmptyMessageDelayed(MESSAGE_SPEAK_WARNING,
+ SPEAK_WARNING_DELAY_MILLIS);
+ mHandler.sendEmptyMessageDelayed(MESSAGE_ENABLE_ACCESSIBILITY,
+ ENABLE_ACCESSIBILITY_DELAY_MILLIS);
+ return true;
+ }
+ return false;
+ }
+
+ public boolean onTouchEvent(MotionEvent event) {
+ final int pointerCount = event.getPointerCount();
+ final int action = event.getActionMasked();
+ if (mCanceled) {
+ if (action == MotionEvent.ACTION_UP) {
+ mCanceled = false;
+ }
+ return true;
+ }
+ switch (action) {
+ case MotionEvent.ACTION_POINTER_DOWN: {
+ if (pointerCount > 2) {
+ cancel();
+ }
+ } break;
+ case MotionEvent.ACTION_MOVE: {
+ final float firstPointerMove = MathUtils.dist(event.getX(0),
+ event.getY(0), mFirstPointerDownX, mFirstPointerDownY);
+ if (Math.abs(firstPointerMove) > mTouchSlop) {
+ cancel();
+ }
+ final float secondPointerMove = MathUtils.dist(event.getX(1),
+ event.getY(1), mSecondPointerDownX, mSecondPointerDownY);
+ if (Math.abs(secondPointerMove) > mTouchSlop) {
+ cancel();
+ }
+ } break;
+ case MotionEvent.ACTION_POINTER_UP:
+ case MotionEvent.ACTION_CANCEL: {
+ cancel();
+ } break;
+ }
+ return true;
+ }
+
+ private void cancel() {
+ mCanceled = true;
+ if (mHandler.hasMessages(MESSAGE_SPEAK_WARNING)) {
+ mHandler.removeMessages(MESSAGE_SPEAK_WARNING);
+ } else if (mHandler.hasMessages(MESSAGE_ENABLE_ACCESSIBILITY)) {
+ mHandler.sendEmptyMessage(MESSAGE_SPEAK_ENABLE_CANCELED);
+ }
+ mHandler.removeMessages(MESSAGE_ENABLE_ACCESSIBILITY);
+ }
+
+ private void enableAccessibility() {
+ List<AccessibilityServiceInfo> services = getInstalledSpeakingAccessibilityServices(
+ mContext);
+ if (services.isEmpty()) {
+ return;
+ }
+ boolean keyguardLocked = false;
+ try {
+ keyguardLocked = mWindowManager.isKeyguardLocked();
+ } catch (RemoteException re) {
+ /* ignore */
+ }
+
+ final boolean hasMoreThanOneUser = mUserManager.getUsers().size() > 1;
+
+ AccessibilityServiceInfo service = services.get(0);
+ boolean enableTouchExploration = (service.flags
+ & AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE) != 0;
+ // Try to find a service supporting explore by touch.
+ if (!enableTouchExploration) {
+ final int serviceCount = services.size();
+ for (int i = 1; i < serviceCount; i++) {
+ AccessibilityServiceInfo candidate = services.get(i);
+ if ((candidate.flags & AccessibilityServiceInfo
+ .FLAG_REQUEST_TOUCH_EXPLORATION_MODE) != 0) {
+ enableTouchExploration = true;
+ service = candidate;
+ break;
+ }
+ }
+ }
+
+ ServiceInfo serviceInfo = service.getResolveInfo().serviceInfo;
+ ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name);
+ if (!keyguardLocked || !hasMoreThanOneUser) {
+ final int userId = ActivityManager.getCurrentUser();
+ String enabledServiceString = componentName.flattenToString();
+ ContentResolver resolver = mContext.getContentResolver();
+ // Enable one speaking accessibility service.
+ Settings.Secure.putStringForUser(resolver,
+ Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+ enabledServiceString, userId);
+ // Allow the services we just enabled to toggle touch exploration.
+ Settings.Secure.putStringForUser(resolver,
+ Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+ enabledServiceString, userId);
+ // Enable touch exploration.
+ if (enableTouchExploration) {
+ Settings.Secure.putIntForUser(resolver, Settings.Secure.TOUCH_EXPLORATION_ENABLED,
+ 1, userId);
+ }
+ // Enable accessibility script injection (AndroidVox) for web content.
+ Settings.Secure.putIntForUser(resolver, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION,
+ 1, userId);
+ // Turn on accessibility mode last.
+ Settings.Secure.putIntForUser(resolver, Settings.Secure.ACCESSIBILITY_ENABLED,
+ 1, userId);
+ } else if (keyguardLocked) {
+ try {
+ mAccessibilityManager.temporaryEnableAccessibilityStateUntilKeyguardRemoved(
+ componentName, enableTouchExploration);
+ } catch (RemoteException re) {
+ /* ignore */
+ }
+ }
+ }
+}
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index d8e361f..0f9ad59 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -16,12 +16,15 @@
package com.android.internal.policy.impl;
+import com.android.internal.app.AlertController;
+import com.android.internal.app.AlertController.AlertParams;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.R;
import android.app.ActivityManagerNative;
import android.app.AlertDialog;
+import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
@@ -32,11 +35,11 @@ import android.database.ContentObserver;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.net.ConnectivityManager;
+import android.os.Bundle;
import android.os.Handler;
-import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
-import android.os.ServiceManager;
+import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
@@ -46,17 +49,21 @@ import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.util.Log;
-import android.view.IWindowManager;
+import android.util.TypedValue;
+import android.view.InputDevice;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.WindowManager;
-import android.view.WindowManagerGlobal;
import android.view.WindowManagerPolicy.WindowManagerFuncs;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
+import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
@@ -78,7 +85,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
private final AudioManager mAudioManager;
private ArrayList<Action> mItems;
- private AlertDialog mDialog;
+ private GlobalActionsDialog mDialog;
private Action mSilentModeAction;
private ToggleAction mAirplaneModeOn;
@@ -150,7 +157,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
* Create the global actions dialog.
* @return A new dialog.
*/
- private AlertDialog createDialog() {
+ private GlobalActionsDialog createDialog() {
// Simple toggle style if there's no vibrator, otherwise use a tri-state
if (!mHasVibrator) {
mSilentModeAction = new SilentModeToggleAction();
@@ -319,12 +326,14 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
mAdapter = new MyAdapter();
- final AlertDialog.Builder ab = new AlertDialog.Builder(mContext);
+ AlertParams params = new AlertParams(mContext);
+ params.mAdapter = mAdapter;
+ params.mOnClickListener = this;
+ params.mForceInverseBackground = true;
- ab.setAdapter(mAdapter, this)
- .setInverseBackgroundForced(true);
+ GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
+ dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
- final AlertDialog dialog = ab.create();
dialog.getListView().setItemsCanFocus(true);
dialog.getListView().setLongClickable(true);
dialog.getListView().setOnItemLongClickListener(
@@ -872,4 +881,121 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
mAirplaneState = on ? ToggleAction.State.On : ToggleAction.State.Off;
}
}
+
+ private static final class GlobalActionsDialog extends Dialog implements DialogInterface {
+ private final Context mContext;
+ private final int mWindowTouchSlop;
+ private final AlertController mAlert;
+
+ private EnableAccessibilityController mEnableAccessibilityController;
+
+ private boolean mIntercepted;
+ private boolean mCancelOnUp;
+
+ public GlobalActionsDialog(Context context, AlertParams params) {
+ super(context, getDialogTheme(context));
+ mContext = context;
+ mAlert = new AlertController(mContext, this, getWindow());
+ mWindowTouchSlop = ViewConfiguration.get(context).getScaledWindowTouchSlop();
+ params.apply(mAlert);
+ }
+
+ private static int getDialogTheme(Context context) {
+ TypedValue outValue = new TypedValue();
+ context.getTheme().resolveAttribute(com.android.internal.R.attr.alertDialogTheme,
+ outValue, true);
+ return outValue.resourceId;
+ }
+
+ @Override
+ protected void onStart() {
+ // If global accessibility gesture can be performed, we will take care
+ // of dismissing the dialog on touch outside. This is because the dialog
+ // is dismissed on the first down while the global gesture is a long press
+ // with two fingers anywhere on the screen.
+ if (EnableAccessibilityController.canEnableAccessibilityViaGesture(mContext)) {
+ mEnableAccessibilityController = new EnableAccessibilityController(mContext);
+ super.setCanceledOnTouchOutside(false);
+ } else {
+ mEnableAccessibilityController = null;
+ super.setCanceledOnTouchOutside(true);
+ }
+ super.onStart();
+ }
+
+ @Override
+ protected void onStop() {
+ if (mEnableAccessibilityController != null) {
+ mEnableAccessibilityController.onDestroy();
+ }
+ super.onStop();
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ if (mEnableAccessibilityController != null) {
+ final int action = event.getActionMasked();
+ if (action == MotionEvent.ACTION_DOWN) {
+ View decor = getWindow().getDecorView();
+ final int eventX = (int) event.getX();
+ final int eventY = (int) event.getY();
+ if (eventX < -mWindowTouchSlop
+ || eventY < -mWindowTouchSlop
+ || eventX >= decor.getWidth() + mWindowTouchSlop
+ || eventY >= decor.getHeight() + mWindowTouchSlop) {
+ mCancelOnUp = true;
+ }
+ }
+ try {
+ if (!mIntercepted) {
+ mIntercepted = mEnableAccessibilityController.onInterceptTouchEvent(event);
+ if (mIntercepted) {
+ final long now = SystemClock.uptimeMillis();
+ event = MotionEvent.obtain(now, now,
+ MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0);
+ event.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+ mCancelOnUp = true;
+ }
+ } else {
+ return mEnableAccessibilityController.onTouchEvent(event);
+ }
+ } finally {
+ if (action == MotionEvent.ACTION_UP) {
+ if (mCancelOnUp) {
+ cancel();
+ }
+ mCancelOnUp = false;
+ mIntercepted = false;
+ }
+ }
+ }
+ return super.dispatchTouchEvent(event);
+ }
+
+ public ListView getListView() {
+ return mAlert.getListView();
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mAlert.installContent();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (mAlert.onKeyDown(keyCode, event)) {
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ @Override
+ public boolean onKeyUp(int keyCode, KeyEvent event) {
+ if (mAlert.onKeyUp(keyCode, event)) {
+ return true;
+ }
+ return super.onKeyUp(keyCode, event);
+ }
+ }
}
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 01b53e2..e4eeceb 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -40,6 +40,8 @@ import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.media.AudioManager;
import android.media.IAudioService;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
import android.os.Bundle;
import android.os.FactoryTest;
import android.os.Handler;
@@ -366,7 +368,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
boolean mScreenOnEarly = false;
boolean mScreenOnFully = false;
boolean mOrientationSensorEnabled = false;
- int mLastSensorRotation = -1;
int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
boolean mHasSoftInput = false;
@@ -506,6 +507,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private boolean mPowerKeyTriggered;
private long mPowerKeyTime;
+ SettingsObserver mSettingsObserver;
ShortcutManager mShortcutManager;
PowerManager.WakeLock mBroadcastWakeLock;
boolean mHavePendingMediaKeyRepeatWithWakeLock;
@@ -552,23 +554,32 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
void observe() {
+ // Observe all users' changes
ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.END_BUTTON_BEHAVIOR), false, this);
+ Settings.System.END_BUTTON_BEHAVIOR), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR), false, this);
+ Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.ACCELEROMETER_ROTATION), false, this);
+ Settings.System.ACCELEROMETER_ROTATION), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.USER_ROTATION), false, this);
+ Settings.System.USER_ROTATION), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.SCREEN_OFF_TIMEOUT), false, this);
+ Settings.System.SCREEN_OFF_TIMEOUT), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.POINTER_LOCATION), false, this);
+ Settings.System.POINTER_LOCATION), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.DEFAULT_INPUT_METHOD), false, this);
+ Settings.Secure.DEFAULT_INPUT_METHOD), false, this,
+ UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- "fancy_rotation_anim"), false, this);
+ "fancy_rotation_anim"), false, this,
+ UserHandle.USER_ALL);
updateSettings();
}
@@ -737,7 +748,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
case LONG_PRESS_POWER_GLOBAL_ACTIONS:
mPowerKeyHandled = true;
- performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
+ if (!performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false)) {
+ performAuditoryFeedbackForAccessibilityIfNeed();
+ }
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
showGlobalActionsDialog();
break;
@@ -875,8 +888,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
try {
mOrientationListener.setCurrentRotation(windowManager.getRotation());
} catch (RemoteException ex) { }
- SettingsObserver settingsObserver = new SettingsObserver(mHandler);
- settingsObserver.observe();
+ mSettingsObserver = new SettingsObserver(mHandler);
+ mSettingsObserver.observe();
mShortcutManager = new ShortcutManager(context, mHandler);
mShortcutManager.observe();
mUiMode = context.getResources().getInteger(
@@ -928,6 +941,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
Intent.EXTRA_DOCK_STATE_UNDOCKED);
}
+ // register for multiuser-relevant broadcasts
+ filter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
+ context.registerReceiver(mMultiuserReceiver, filter);
+
mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
mLongPressVibePattern = getLongIntArray(mContext.getResources(),
com.android.internal.R.array.config_longPressVibePattern);
@@ -1066,22 +1083,25 @@ public class PhoneWindowManager implements WindowManagerPolicy {
ContentResolver resolver = mContext.getContentResolver();
boolean updateRotation = false;
synchronized (mLock) {
- mEndcallBehavior = Settings.System.getInt(resolver,
+ mEndcallBehavior = Settings.System.getIntForUser(resolver,
Settings.System.END_BUTTON_BEHAVIOR,
- Settings.System.END_BUTTON_BEHAVIOR_DEFAULT);
- mIncallPowerBehavior = Settings.Secure.getInt(resolver,
+ Settings.System.END_BUTTON_BEHAVIOR_DEFAULT,
+ UserHandle.USER_CURRENT);
+ mIncallPowerBehavior = Settings.Secure.getIntForUser(resolver,
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
- Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT);
+ Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT,
+ UserHandle.USER_CURRENT);
// Configure rotation lock.
- int userRotation = Settings.System.getInt(resolver,
- Settings.System.USER_ROTATION, Surface.ROTATION_0);
+ int userRotation = Settings.System.getIntForUser(resolver,
+ Settings.System.USER_ROTATION, Surface.ROTATION_0,
+ UserHandle.USER_CURRENT);
if (mUserRotation != userRotation) {
mUserRotation = userRotation;
updateRotation = true;
}
- int userRotationMode = Settings.System.getInt(resolver,
- Settings.System.ACCELEROMETER_ROTATION, 0) != 0 ?
+ int userRotationMode = Settings.System.getIntForUser(resolver,
+ Settings.System.ACCELEROMETER_ROTATION, 0, UserHandle.USER_CURRENT) != 0 ?
WindowManagerPolicy.USER_ROTATION_FREE :
WindowManagerPolicy.USER_ROTATION_LOCKED;
if (mUserRotationMode != userRotationMode) {
@@ -1091,8 +1111,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
if (mSystemReady) {
- int pointerLocation = Settings.System.getInt(resolver,
- Settings.System.POINTER_LOCATION, 0);
+ int pointerLocation = Settings.System.getIntForUser(resolver,
+ Settings.System.POINTER_LOCATION, 0, UserHandle.USER_CURRENT);
if (mPointerLocationMode != pointerLocation) {
mPointerLocationMode = pointerLocation;
mHandler.sendEmptyMessage(pointerLocation != 0 ?
@@ -1100,10 +1120,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
// use screen off timeout setting as the timeout for the lockscreen
- mLockScreenTimeout = Settings.System.getInt(resolver,
- Settings.System.SCREEN_OFF_TIMEOUT, 0);
- String imId = Settings.Secure.getString(resolver,
- Settings.Secure.DEFAULT_INPUT_METHOD);
+ mLockScreenTimeout = Settings.System.getIntForUser(resolver,
+ Settings.System.SCREEN_OFF_TIMEOUT, 0, UserHandle.USER_CURRENT);
+ String imId = Settings.Secure.getStringForUser(resolver,
+ Settings.Secure.DEFAULT_INPUT_METHOD, UserHandle.USER_CURRENT);
boolean hasSoftInput = imId != null && imId.length() > 0;
if (mHasSoftInput != hasSoftInput) {
mHasSoftInput = hasSoftInput;
@@ -2916,8 +2936,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
try {
IStatusBarService statusbar = getStatusBarService();
if (statusbar != null) {
- statusbar.collapseNotifications();
- statusbar.collapseQuickSettings();
+ statusbar.collapsePanels();
}
} catch (RemoteException ex) {
// re-acquire status bar service next time it is needed.
@@ -3557,6 +3576,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
};
+ BroadcastReceiver mMultiuserReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) {
+ // tickle the settings observer: this first ensures that we're
+ // observing the relevant settings for the newly-active user,
+ // and then updates our own bookkeeping based on the now-
+ // current user.
+ mSettingsObserver.onChange(false);
+ }
+ }
+ };
+
/** {@inheritDoc} */
public void screenTurnedOff(int why) {
EventLog.writeEvent(70000, 0);
@@ -3719,16 +3751,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
synchronized (mLock) {
int sensorRotation = mOrientationListener.getProposedRotation(); // may be -1
if (sensorRotation < 0) {
- // Sensor is disabled, device probably just turned off.
- if (mLastSensorRotation >= 0) {
- sensorRotation = mLastSensorRotation;
- } else {
- // Sensor has never been enabled. Last resort is to use lastRotation.
- sensorRotation = lastRotation;
- }
- } else {
- // Valid sensor data, save it away.
- mLastSensorRotation = sensorRotation;
+ sensorRotation = lastRotation;
}
final int preferredRotation;
@@ -3889,16 +3912,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// mUserRotationMode and mUserRotation will be assigned by the content observer
if (mode == WindowManagerPolicy.USER_ROTATION_LOCKED) {
- Settings.System.putInt(res,
+ Settings.System.putIntForUser(res,
Settings.System.USER_ROTATION,
- rot);
- Settings.System.putInt(res,
+ rot,
+ UserHandle.USER_CURRENT);
+ Settings.System.putIntForUser(res,
Settings.System.ACCELEROMETER_ROTATION,
- 0);
+ 0,
+ UserHandle.USER_CURRENT);
} else {
- Settings.System.putInt(res,
+ Settings.System.putIntForUser(res,
Settings.System.ACCELEROMETER_ROTATION,
- 1);
+ 1,
+ UserHandle.USER_CURRENT);
}
}
@@ -4217,9 +4243,28 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
+ private void performAuditoryFeedbackForAccessibilityIfNeed() {
+ if (!isGlobalAccessibilityGestureEnabled()) {
+ return;
+ }
+ AudioManager audioManager = (AudioManager) mContext.getSystemService(
+ Context.AUDIO_SERVICE);
+ if (audioManager.isSilentMode()) {
+ return;
+ }
+ Ringtone ringTone = RingtoneManager.getRingtone(mContext,
+ Settings.System.DEFAULT_NOTIFICATION_URI);
+ ringTone.setStreamType(AudioManager.STREAM_MUSIC);
+ ringTone.play();
+ }
+ private boolean isGlobalAccessibilityGestureEnabled() {
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1;
+ }
+
public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) {
- final boolean hapticsDisabled = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) == 0;
+ final boolean hapticsDisabled = Settings.System.getIntForUser(mContext.getContentResolver(),
+ Settings.System.HAPTIC_FEEDBACK_ENABLED, 0, UserHandle.USER_CURRENT) == 0;
if (!always && (hapticsDisabled || mKeyguardMediator.isShowingAndNotHidden())) {
return false;
}
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java b/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java
index ece0948..cbbc92c 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java
@@ -40,6 +40,7 @@ import com.android.internal.R;
* Displays the time
*/
public class ClockView extends RelativeLayout {
+ private static final String ANDROID_CLOCK_FONT_FILE = "/system/fonts/AndroidClock.ttf";
private final static String M12 = "h:mm";
private final static String M24 = "kk:mm";
@@ -153,7 +154,7 @@ public class ClockView extends RelativeLayout {
protected void onFinishInflate() {
super.onFinishInflate();
mTimeView = (TextView) findViewById(R.id.clock_text);
- mTimeView.setTypeface(Typeface.create("sans-serif-thin", Typeface.NORMAL));
+ mTimeView.setTypeface(Typeface.createFromFile(ANDROID_CLOCK_FONT_FILE));
mAmPm = new AmPm(this, null);
mCalendar = Calendar.getInstance();
setDateFormat();
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java
index a4159d0..4f2f6bf 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java
@@ -29,6 +29,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.os.PowerManager;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
@@ -128,6 +129,8 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback {
*/
public void hide() {
if (DEBUG) Log.d(TAG, "hide()");
+ // Removes any wakelock messages to make sure they don't cause the screen to turn back on.
+ mHandler.removeMessages(MSG_POKE_WAKELOCK);
// Remove messages to prevent a delayed show message from undo-ing the hide
removeDisplayMessages();
mHandler.sendEmptyMessage(MSG_HIDE_FACE_UNLOCK_VIEW);
@@ -384,10 +387,14 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback {
}
/**
- * Pokes the wakelock to keep the screen alive and active for a specific amount of time.
+ * If the screen is on, pokes the wakelock to keep the screen alive and active for a specific
+ * amount of time.
*/
void handlePokeWakelock(int millis) {
+ PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ if (powerManager.isScreenOn()) {
mKeyguardScreenCallback.userActivity(millis);
+ }
}
/**
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java
index 062c1be..5922810 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java
@@ -69,6 +69,14 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu
}
@Override
+ public void onDetachedFromWindow() {
+ if (mBiometricUnlock != null) {
+ mBiometricUnlock.hide();
+ mBiometricUnlock.stop();
+ }
+ }
+
+ @Override
public void onPause() {
if (mBiometricUnlock != null) {
mBiometricUnlock.hide();
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
index 2e7228c..c5ec33b 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
@@ -123,7 +123,9 @@ public class KeyguardHostView extends KeyguardViewBase {
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
- mViewMediatorCallback.keyguardDoneDrawing();
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.keyguardDoneDrawing();
+ }
}
private int getWidgetPosition(int id) {
@@ -230,7 +232,9 @@ public class KeyguardHostView extends KeyguardViewBase {
private KeyguardSecurityCallback mCallback = new KeyguardSecurityCallback() {
public void userActivity(long timeout) {
- mViewMediatorCallback.pokeWakelock(timeout);
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.pokeWakelock(timeout);
+ }
}
public void dismiss(boolean authenticated) {
@@ -450,7 +454,9 @@ public class KeyguardHostView extends KeyguardViewBase {
mLaunchRunnable.run();
mLaunchRunnable = null;
}
- mViewMediatorCallback.keyguardDone(true);
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.keyguardDone(true);
+ }
}
}
@@ -541,7 +547,9 @@ public class KeyguardHostView extends KeyguardViewBase {
oldView.onPause();
newView.onResume();
- mViewMediatorCallback.setNeedsInput(newView.needsInput());
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.setNeedsInput(newView.needsInput());
+ }
// Find and show this child.
final int childCount = mSecurityViewContainer.getChildCount();
@@ -624,9 +632,10 @@ public class KeyguardHostView extends KeyguardViewBase {
if (keyCode == KeyEvent.KEYCODE_MENU && isSecure()) {
if (DEBUG) Log.d(TAG, "switching screens to unlock screen because wake key was MENU");
showSecurityScreen(SecurityMode.None);
- mViewMediatorCallback.pokeWakelock();
} else {
if (DEBUG) Log.d(TAG, "poking wake lock immediately");
+ }
+ if (mViewMediatorCallback != null) {
mViewMediatorCallback.pokeWakelock();
}
}
@@ -635,11 +644,15 @@ public class KeyguardHostView extends KeyguardViewBase {
public void verifyUnlock() {
SecurityMode securityMode = mSecurityModel.getSecurityMode();
if (securityMode == KeyguardSecurityModel.SecurityMode.None) {
- mViewMediatorCallback.keyguardDone(true);
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.keyguardDone(true);
+ }
} else if (securityMode != KeyguardSecurityModel.SecurityMode.Pattern
&& securityMode != KeyguardSecurityModel.SecurityMode.Password) {
// can only verify unlock when in pattern/password mode
- mViewMediatorCallback.keyguardDone(false);
+ if (mViewMediatorCallback != null) {
+ mViewMediatorCallback.keyguardDone(false);
+ }
} else {
// otherwise, go to the unlock screen, see if they can verify it
mIsVerifyUnlockOnly = true;
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java
index 92bc93c..4f2545f 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java
@@ -122,7 +122,15 @@ public class KeyguardPasswordView extends LinearLayout
mPasswordEntry = (EditText) findViewById(R.id.passwordEntry);
mPasswordEntry.setOnEditorActionListener(this);
- mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false);
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false,
+ new int[] {
+ R.xml.kg_password_kbd_numeric,
+ com.android.internal.R.xml.password_kbd_qwerty,
+ com.android.internal.R.xml.password_kbd_qwerty_shifted,
+ com.android.internal.R.xml.password_kbd_symbols,
+ com.android.internal.R.xml.password_kbd_symbols_shift
+ }
+ );
mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled());
boolean imeOrDeleteButtonVisible = false;
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
index 780f117..e4b7798 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
@@ -31,7 +31,7 @@ import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
-import android.widget.GridLayout;
+import android.widget.LinearLayout;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
@@ -40,7 +40,7 @@ import com.android.internal.R;
import java.io.IOException;
import java.util.List;
-public class KeyguardPatternView extends GridLayout implements KeyguardSecurityView {
+public class KeyguardPatternView extends LinearLayout implements KeyguardSecurityView {
private static final String TAG = "SecurityPatternView";
private static final boolean DEBUG = false;
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java
index bc55008..f913519 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java
@@ -82,7 +82,14 @@ public class KeyguardSimPinView extends LinearLayout
mPinEntry.setOnEditorActionListener(this);
mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard);
- mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false);
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false,
+ new int[] {
+ R.xml.kg_password_kbd_numeric,
+ com.android.internal.R.xml.password_kbd_qwerty,
+ com.android.internal.R.xml.password_kbd_qwerty_shifted,
+ com.android.internal.R.xml.password_kbd_symbols,
+ com.android.internal.R.xml.password_kbd_symbols_shift
+ });
mKeyboardHelper.setKeyboardMode(PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled());
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java
index e04bff9..d4bed25 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java
@@ -96,7 +96,14 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList
mDelPinButton.setOnClickListener(this);
mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard);
- mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false);
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false,
+ new int[] {
+ R.xml.kg_password_kbd_numeric,
+ com.android.internal.R.xml.password_kbd_qwerty,
+ com.android.internal.R.xml.password_kbd_qwerty_shifted,
+ com.android.internal.R.xml.password_kbd_symbols,
+ com.android.internal.R.xml.password_kbd_symbols_shift
+ });
mKeyboardHelper.setKeyboardMode(PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled());
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
index b30913a..701017d 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
@@ -102,7 +102,8 @@ class KeyguardStatusViewManager {
public KeyguardStatusViewManager(View view) {
if (DEBUG) Log.v(TAG, "KeyguardStatusViewManager()");
mContainer = view;
- mDateFormatString = getContext().getResources().getText(R.string.keyguard_wday_day_month);
+ mDateFormatString = getContext().getResources().getText(
+ com.android.internal.R.string.abbrev_wday_month_day_no_year);
mLockPatternUtils = new LockPatternUtils(view.getContext());
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(view.getContext());
@@ -113,7 +114,7 @@ class KeyguardStatusViewManager {
mClockView = (ClockView) view.findViewById(R.id.clock_view);
// Use custom font in mDateView
- mDateView.setTypeface(Typeface.create("sans-serif-thin", Typeface.NORMAL));
+ mDateView.setTypeface(Typeface.SANS_SERIF);
// Required to get Marquee to work.
final View marqueeViews[] = { mDateView, mStatus1View, mOwnerInfoView, mAlarmStatusView };
@@ -183,6 +184,7 @@ class KeyguardStatusViewManager {
Settings.Secure.LOCK_SCREEN_OWNER_INFO_ENABLED, 1, UserHandle.USER_CURRENT) != 0;
String text = Settings.Secure.getStringForUser(res, Settings.Secure.LOCK_SCREEN_OWNER_INFO,
UserHandle.USER_CURRENT);
+ text = text != null ? text.trim() : null; // Remove trailing newlines
if (ownerInfoEnabled && !TextUtils.isEmpty(text)) {
maybeSetUpperCaseText(mOwnerInfoView, text);
mOwnerInfoView.setVisibility(View.VISIBLE);
@@ -228,8 +230,7 @@ class KeyguardStatusViewManager {
}
private void maybeSetUpperCaseText(TextView textView, CharSequence text) {
- if (KeyguardViewManager.USE_UPPER_CASE
- && (textView == mDateView)) { // currently only required for date view
+ if (KeyguardViewManager.USE_UPPER_CASE) { // currently only required for date view
textView.setText(text != null ? text.toString().toUpperCase() : null);
} else {
textView.setText(text);
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java
index 14e4b67..ebdb116 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java
@@ -46,7 +46,7 @@ import com.android.internal.R;
public class KeyguardViewManager {
private final static boolean DEBUG = false;
private static String TAG = "KeyguardViewManager";
- public static boolean USE_UPPER_CASE = false;
+ public static boolean USE_UPPER_CASE = true;
private final Context mContext;
private final ViewManager mViewManager;
diff --git a/services/input/InputDispatcher.cpp b/services/input/InputDispatcher.cpp
index 87a6c1b..be0cec9 100644
--- a/services/input/InputDispatcher.cpp
+++ b/services/input/InputDispatcher.cpp
@@ -2485,15 +2485,15 @@ bool InputDispatcher::shouldSendMotionToInputFilterLocked(const NotifyMotionArgs
void InputDispatcher::notifySwitch(const NotifySwitchArgs* args) {
#if DEBUG_INBOUND_EVENT_DETAILS
- ALOGD("notifySwitch - eventTime=%lld, policyFlags=0x%x, switchCode=%d, switchValue=%d",
+ ALOGD("notifySwitch - eventTime=%lld, policyFlags=0x%x, switchValues=0x%08x, switchMask=0x%08x",
args->eventTime, args->policyFlags,
- args->switchCode, args->switchValue);
+ args->switchValues, args->switchMask);
#endif
uint32_t policyFlags = args->policyFlags;
policyFlags |= POLICY_FLAG_TRUSTED;
mPolicy->notifySwitch(args->eventTime,
- args->switchCode, args->switchValue, policyFlags);
+ args->switchValues, args->switchMask, policyFlags);
}
void InputDispatcher::notifyDeviceReset(const NotifyDeviceResetArgs* args) {
diff --git a/services/input/InputDispatcher.h b/services/input/InputDispatcher.h
index af7ff5e..6099c43 100644
--- a/services/input/InputDispatcher.h
+++ b/services/input/InputDispatcher.h
@@ -248,7 +248,7 @@ public:
/* Notifies the policy about switch events.
*/
virtual void notifySwitch(nsecs_t when,
- int32_t switchCode, int32_t switchValue, uint32_t policyFlags) = 0;
+ uint32_t switchValues, uint32_t switchMask, uint32_t policyFlags) = 0;
/* Poke user activity for an event dispatched to a window. */
virtual void pokeUserActivity(nsecs_t eventTime, int32_t eventType) = 0;
diff --git a/services/input/InputListener.cpp b/services/input/InputListener.cpp
index c2705b0..85bb0ed 100644
--- a/services/input/InputListener.cpp
+++ b/services/input/InputListener.cpp
@@ -104,14 +104,14 @@ void NotifyMotionArgs::notify(const sp<InputListenerInterface>& listener) const
// --- NotifySwitchArgs ---
NotifySwitchArgs::NotifySwitchArgs(nsecs_t eventTime, uint32_t policyFlags,
- int32_t switchCode, int32_t switchValue) :
+ uint32_t switchValues, uint32_t switchMask) :
eventTime(eventTime), policyFlags(policyFlags),
- switchCode(switchCode), switchValue(switchValue) {
+ switchValues(switchValues), switchMask(switchMask) {
}
NotifySwitchArgs::NotifySwitchArgs(const NotifySwitchArgs& other) :
eventTime(other.eventTime), policyFlags(other.policyFlags),
- switchCode(other.switchCode), switchValue(other.switchValue) {
+ switchValues(other.switchValues), switchMask(other.switchMask) {
}
void NotifySwitchArgs::notify(const sp<InputListenerInterface>& listener) const {
diff --git a/services/input/InputListener.h b/services/input/InputListener.h
index 486852b..cd7c25a 100644
--- a/services/input/InputListener.h
+++ b/services/input/InputListener.h
@@ -116,13 +116,13 @@ struct NotifyMotionArgs : public NotifyArgs {
struct NotifySwitchArgs : public NotifyArgs {
nsecs_t eventTime;
uint32_t policyFlags;
- int32_t switchCode;
- int32_t switchValue;
+ uint32_t switchValues;
+ uint32_t switchMask;
inline NotifySwitchArgs() { }
NotifySwitchArgs(nsecs_t eventTime, uint32_t policyFlags,
- int32_t switchCode, int32_t switchValue);
+ uint32_t switchValues, uint32_t switchMask);
NotifySwitchArgs(const NotifySwitchArgs& other);
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index d56b9a9..cebfeb4 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -1800,7 +1800,7 @@ void InputMapper::dumpRawAbsoluteAxisInfo(String8& dump,
// --- SwitchInputMapper ---
SwitchInputMapper::SwitchInputMapper(InputDevice* device) :
- InputMapper(device) {
+ InputMapper(device), mUpdatedSwitchValues(0), mUpdatedSwitchMask(0) {
}
SwitchInputMapper::~SwitchInputMapper() {
@@ -1813,14 +1813,33 @@ uint32_t SwitchInputMapper::getSources() {
void SwitchInputMapper::process(const RawEvent* rawEvent) {
switch (rawEvent->type) {
case EV_SW:
- processSwitch(rawEvent->when, rawEvent->code, rawEvent->value);
+ processSwitch(rawEvent->code, rawEvent->value);
break;
+
+ case EV_SYN:
+ if (rawEvent->code == SYN_REPORT) {
+ sync(rawEvent->when);
+ }
}
}
-void SwitchInputMapper::processSwitch(nsecs_t when, int32_t switchCode, int32_t switchValue) {
- NotifySwitchArgs args(when, 0, switchCode, switchValue);
- getListener()->notifySwitch(&args);
+void SwitchInputMapper::processSwitch(int32_t switchCode, int32_t switchValue) {
+ if (switchCode >= 0 && switchCode < 32) {
+ if (switchValue) {
+ mUpdatedSwitchValues |= 1 << switchCode;
+ }
+ mUpdatedSwitchMask |= 1 << switchCode;
+ }
+}
+
+void SwitchInputMapper::sync(nsecs_t when) {
+ if (mUpdatedSwitchMask) {
+ NotifySwitchArgs args(when, 0, mUpdatedSwitchValues, mUpdatedSwitchMask);
+ getListener()->notifySwitch(&args);
+
+ mUpdatedSwitchValues = 0;
+ mUpdatedSwitchMask = 0;
+ }
}
int32_t SwitchInputMapper::getSwitchState(uint32_t sourceMask, int32_t switchCode) {
diff --git a/services/input/InputReader.h b/services/input/InputReader.h
index e1a8dd8..61b21e2 100644
--- a/services/input/InputReader.h
+++ b/services/input/InputReader.h
@@ -962,7 +962,11 @@ public:
virtual int32_t getSwitchState(uint32_t sourceMask, int32_t switchCode);
private:
- void processSwitch(nsecs_t when, int32_t switchCode, int32_t switchValue);
+ uint32_t mUpdatedSwitchValues;
+ uint32_t mUpdatedSwitchMask;
+
+ void processSwitch(int32_t switchCode, int32_t switchValue);
+ void sync(nsecs_t when);
};
diff --git a/services/input/tests/InputDispatcher_test.cpp b/services/input/tests/InputDispatcher_test.cpp
index 961566f..ed2b4a5 100644
--- a/services/input/tests/InputDispatcher_test.cpp
+++ b/services/input/tests/InputDispatcher_test.cpp
@@ -86,7 +86,7 @@ private:
}
virtual void notifySwitch(nsecs_t when,
- int32_t switchCode, int32_t switchValue, uint32_t policyFlags) {
+ uint32_t switchValues, uint32_t switchMask, uint32_t policyFlags) {
}
virtual void pokeUserActivity(nsecs_t eventTime, int32_t eventType) {
diff --git a/services/input/tests/InputReader_test.cpp b/services/input/tests/InputReader_test.cpp
index c6dbbf3..14065d2 100644
--- a/services/input/tests/InputReader_test.cpp
+++ b/services/input/tests/InputReader_test.cpp
@@ -1493,12 +1493,16 @@ TEST_F(SwitchInputMapperTest, Process) {
addMapperAndConfigure(mapper);
process(mapper, ARBITRARY_TIME, DEVICE_ID, EV_SW, SW_LID, 1);
+ process(mapper, ARBITRARY_TIME, DEVICE_ID, EV_SW, SW_JACK_PHYSICAL_INSERT, 1);
+ process(mapper, ARBITRARY_TIME, DEVICE_ID, EV_SW, SW_HEADPHONE_INSERT, 0);
+ process(mapper, ARBITRARY_TIME, DEVICE_ID, EV_SYN, SYN_REPORT, 0);
NotifySwitchArgs args;
ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifySwitchWasCalled(&args));
ASSERT_EQ(ARBITRARY_TIME, args.eventTime);
- ASSERT_EQ(SW_LID, args.switchCode);
- ASSERT_EQ(1, args.switchValue);
+ ASSERT_EQ((1 << SW_LID) | (1 << SW_JACK_PHYSICAL_INSERT), args.switchValues);
+ ASSERT_EQ((1 << SW_LID) | (1 << SW_JACK_PHYSICAL_INSERT) | (1 << SW_HEADPHONE_INSERT),
+ args.switchMask);
ASSERT_EQ(uint32_t(0), args.policyFlags);
}
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index 8ec67c4..e77f8cf 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -534,6 +534,7 @@ class AppWidgetServiceImpl {
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mAppWidgetIds) {
+ options = cloneIfLocalBinder(options);
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id == null) {
@@ -817,7 +818,7 @@ class AppWidgetServiceImpl {
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id != null && id.provider != null && !id.provider.zombie) {
- return id.provider.info;
+ return cloneIfLocalBinder(id.provider.info);
}
return null;
}
@@ -828,7 +829,7 @@ class AppWidgetServiceImpl {
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id != null) {
- return id.views;
+ return cloneIfLocalBinder(id.views);
}
return null;
}
@@ -842,7 +843,7 @@ class AppWidgetServiceImpl {
for (int i = 0; i < N; i++) {
Provider p = mInstalledProviders.get(i);
if (!p.zombie) {
- result.add(p.info);
+ result.add(cloneIfLocalBinder(p.info));
}
}
return result;
@@ -881,6 +882,7 @@ class AppWidgetServiceImpl {
public void updateAppWidgetOptions(int appWidgetId, Bundle options) {
synchronized (mAppWidgetIds) {
+ options = cloneIfLocalBinder(options);
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
@@ -907,7 +909,7 @@ class AppWidgetServiceImpl {
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id != null && id.options != null) {
- return id.options;
+ return cloneIfLocalBinder(id.options);
} else {
return Bundle.EMPTY;
}
@@ -1062,6 +1064,34 @@ class AppWidgetServiceImpl {
}
}
+ private boolean isLocalBinder() {
+ return Process.myPid() == Binder.getCallingPid();
+ }
+
+ private RemoteViews cloneIfLocalBinder(RemoteViews rv) {
+ if (isLocalBinder() && rv != null) {
+ return rv.clone();
+ }
+ return rv;
+ }
+
+ private AppWidgetProviderInfo cloneIfLocalBinder(AppWidgetProviderInfo info) {
+ if (isLocalBinder() && info != null) {
+ return info.clone();
+ }
+ return info;
+ }
+
+ private Bundle cloneIfLocalBinder(Bundle bundle) {
+ // Note: this is only a shallow copy. For now this will be fine, but it could be problematic
+ // if we start adding objects to the options. Further, it would only be an issue if keyguard
+ // used such options.
+ if (isLocalBinder() && bundle != null) {
+ return (Bundle) bundle.clone();
+ }
+ return bundle;
+ }
+
public int[] startListening(IAppWidgetHost callbacks, String packageName, int hostId,
List<RemoteViews> updatedViews) {
int callingUid = enforceCallingUid(packageName);
@@ -1078,7 +1108,7 @@ class AppWidgetServiceImpl {
for (int i = 0; i < N; i++) {
AppWidgetId id = instances.get(i);
updatedIds[i] = id.appWidgetId;
- updatedViews.add(id.views);
+ updatedViews.add(cloneIfLocalBinder(id.views));
}
return updatedIds;
}
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 15fc479..9f01eca 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -2451,6 +2451,21 @@ class BackupManagerService extends IBackupManager.Stub {
}
}
+ // Cull any packages that run as system-domain uids but do not define their
+ // own backup agents
+ for (int i = 0; i < packagesToBackup.size(); ) {
+ PackageInfo pkg = packagesToBackup.get(i);
+ if ((pkg.applicationInfo.uid < Process.FIRST_APPLICATION_UID)
+ && (pkg.applicationInfo.backupAgentName == null)) {
+ if (MORE_DEBUG) {
+ Slog.i(TAG, "... ignoring non-agent system package " + pkg.packageName);
+ }
+ packagesToBackup.remove(i);
+ } else {
+ i++;
+ }
+ }
+
FileOutputStream ofstream = new FileOutputStream(mOutputFile.getFileDescriptor());
OutputStream out = null;
@@ -3669,29 +3684,37 @@ class BackupManagerService extends IBackupManager.Stub {
// Fall through to IGNORE if the app explicitly disallows backup
final int flags = pkgInfo.applicationInfo.flags;
if ((flags & ApplicationInfo.FLAG_ALLOW_BACKUP) != 0) {
- // Verify signatures against any installed version; if they
- // don't match, then we fall though and ignore the data. The
- // signatureMatch() method explicitly ignores the signature
- // check for packages installed on the system partition, because
- // such packages are signed with the platform cert instead of
- // the app developer's cert, so they're different on every
- // device.
- if (signaturesMatch(sigs, pkgInfo)) {
- if (pkgInfo.versionCode >= version) {
- Slog.i(TAG, "Sig + version match; taking data");
- policy = RestorePolicy.ACCEPT;
+ // Restore system-uid-space packages only if they have
+ // defined a custom backup agent
+ if ((pkgInfo.applicationInfo.uid >= Process.FIRST_APPLICATION_UID)
+ || (pkgInfo.applicationInfo.backupAgentName != null)) {
+ // Verify signatures against any installed version; if they
+ // don't match, then we fall though and ignore the data. The
+ // signatureMatch() method explicitly ignores the signature
+ // check for packages installed on the system partition, because
+ // such packages are signed with the platform cert instead of
+ // the app developer's cert, so they're different on every
+ // device.
+ if (signaturesMatch(sigs, pkgInfo)) {
+ if (pkgInfo.versionCode >= version) {
+ Slog.i(TAG, "Sig + version match; taking data");
+ policy = RestorePolicy.ACCEPT;
+ } else {
+ // The data is from a newer version of the app than
+ // is presently installed. That means we can only
+ // use it if the matching apk is also supplied.
+ Slog.d(TAG, "Data version " + version
+ + " is newer than installed version "
+ + pkgInfo.versionCode + " - requiring apk");
+ policy = RestorePolicy.ACCEPT_IF_APK;
+ }
} else {
- // The data is from a newer version of the app than
- // is presently installed. That means we can only
- // use it if the matching apk is also supplied.
- Slog.d(TAG, "Data version " + version
- + " is newer than installed version "
- + pkgInfo.versionCode + " - requiring apk");
- policy = RestorePolicy.ACCEPT_IF_APK;
+ Slog.w(TAG, "Restore manifest signatures do not match "
+ + "installed application for " + info.packageName);
}
} else {
- Slog.w(TAG, "Restore manifest signatures do not match "
- + "installed application for " + info.packageName);
+ Slog.w(TAG, "Package " + info.packageName
+ + " is system level with no agent");
}
} else {
if (DEBUG) Slog.i(TAG, "Restore manifest from "
diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java
index fe8529b..0b4871d 100644
--- a/services/java/com/android/server/BatteryService.java
+++ b/services/java/com/android/server/BatteryService.java
@@ -463,10 +463,10 @@ public class BatteryService extends Binder {
private final void logOutlier(long duration) {
ContentResolver cr = mContext.getContentResolver();
- String dischargeThresholdString = Settings.Secure.getString(cr,
- Settings.Secure.BATTERY_DISCHARGE_THRESHOLD);
- String durationThresholdString = Settings.Secure.getString(cr,
- Settings.Secure.BATTERY_DISCHARGE_DURATION_THRESHOLD);
+ String dischargeThresholdString = Settings.Global.getString(cr,
+ Settings.Global.BATTERY_DISCHARGE_THRESHOLD);
+ String durationThresholdString = Settings.Global.getString(cr,
+ Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD);
if (dischargeThresholdString != null && durationThresholdString != null) {
try {
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index ceb17c7..033aa1e 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -378,8 +378,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
// read our default dns server ip
- String dns = Settings.Secure.getString(context.getContentResolver(),
- Settings.Secure.DEFAULT_DNS_SERVER);
+ String dns = Settings.Global.getString(context.getContentResolver(),
+ Settings.Global.DEFAULT_DNS_SERVER);
if (dns == null || dns.length() == 0) {
dns = context.getResources().getString(
com.android.internal.R.string.config_default_dns_server);
@@ -715,9 +715,9 @@ public class ConnectivityService extends IConnectivityManager.Stub {
/** Check system properties for the default value then use secure settings value, if any. */
int defaultDelay = SystemProperties.getInt(
- "conn." + Settings.Secure.CONNECTIVITY_CHANGE_DELAY,
- Settings.Secure.CONNECTIVITY_CHANGE_DELAY_DEFAULT);
- return Settings.Secure.getInt(cr, Settings.Secure.CONNECTIVITY_CHANGE_DELAY,
+ "conn." + Settings.Global.CONNECTIVITY_CHANGE_DELAY,
+ ConnectivityManager.CONNECTIVITY_CHANGE_DELAY_DEFAULT);
+ return Settings.Global.getInt(cr, Settings.Global.CONNECTIVITY_CHANGE_DELAY,
defaultDelay);
}
@@ -1509,8 +1509,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// which is where we store the value and maybe make this
// asynchronous.
enforceAccessPermission();
- boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.MOBILE_DATA, 1) == 1;
+ boolean retVal = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.MOBILE_DATA, 1) == 1;
if (VDBG) log("getMobileDataEnabled returning " + retVal);
return retVal;
}
@@ -2997,11 +2997,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
if (VDBG) log("handleInetConditionChange: starting a change hold");
// setup a new hold to debounce this
if (mDefaultInetCondition > 50) {
- delay = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.INET_CONDITION_DEBOUNCE_UP_DELAY, 500);
+ delay = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY, 500);
} else {
- delay = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.INET_CONDITION_DEBOUNCE_DOWN_DELAY, 3000);
+ delay = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY, 3000);
}
mInetConditionChangeInFlight = true;
mHandler.sendMessageDelayed(mHandler.obtainMessage(EVENT_INET_CONDITION_HOLD_END,
@@ -3070,9 +3070,9 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mGlobalProxy = null;
}
ContentResolver res = mContext.getContentResolver();
- Settings.Secure.putString(res, Settings.Secure.GLOBAL_HTTP_PROXY_HOST, host);
- Settings.Secure.putInt(res, Settings.Secure.GLOBAL_HTTP_PROXY_PORT, port);
- Settings.Secure.putString(res, Settings.Secure.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
+ Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST, host);
+ Settings.Global.putInt(res, Settings.Global.GLOBAL_HTTP_PROXY_PORT, port);
+ Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
exclList);
}
@@ -3084,10 +3084,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private void loadGlobalProxy() {
ContentResolver res = mContext.getContentResolver();
- String host = Settings.Secure.getString(res, Settings.Secure.GLOBAL_HTTP_PROXY_HOST);
- int port = Settings.Secure.getInt(res, Settings.Secure.GLOBAL_HTTP_PROXY_PORT, 0);
- String exclList = Settings.Secure.getString(res,
- Settings.Secure.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
+ String host = Settings.Global.getString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST);
+ int port = Settings.Global.getInt(res, Settings.Global.GLOBAL_HTTP_PROXY_PORT, 0);
+ String exclList = Settings.Global.getString(res,
+ Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
if (!TextUtils.isEmpty(host)) {
ProxyProperties proxyProperties = new ProxyProperties(host, port, exclList);
synchronized (mGlobalProxyLock) {
@@ -3118,8 +3118,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
private void handleDeprecatedGlobalHttpProxy() {
- String proxy = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.HTTP_PROXY);
+ String proxy = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.HTTP_PROXY);
if (!TextUtils.isEmpty(proxy)) {
String data[] = proxy.split(":");
String proxyHost = data[0];
@@ -3162,8 +3162,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
void observe(Context context) {
ContentResolver resolver = context.getContentResolver();
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.HTTP_PROXY), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.HTTP_PROXY), false, this);
}
@Override
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index 83fa55b..9607624 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -2124,9 +2124,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
exclusionList = exclusionList.trim();
ContentResolver res = mContext.getContentResolver();
- Settings.Secure.putString(res, Settings.Secure.GLOBAL_HTTP_PROXY_HOST, data[0]);
- Settings.Secure.putInt(res, Settings.Secure.GLOBAL_HTTP_PROXY_PORT, proxyPort);
- Settings.Secure.putString(res, Settings.Secure.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
+ Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST, data[0]);
+ Settings.Global.putInt(res, Settings.Global.GLOBAL_HTTP_PROXY_PORT, proxyPort);
+ Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
exclusionList);
}
diff --git a/services/java/com/android/server/DeviceStorageMonitorService.java b/services/java/com/android/server/DeviceStorageMonitorService.java
index 750a2fb..a4c376d 100644
--- a/services/java/com/android/server/DeviceStorageMonitorService.java
+++ b/services/java/com/android/server/DeviceStorageMonitorService.java
@@ -163,8 +163,8 @@ public class DeviceStorageMonitorService extends Binder {
mFreeMem = Long.parseLong(debugFreeMem);
}
// Read the log interval from secure settings
- long freeMemLogInterval = Settings.Secure.getLong(mContentResolver,
- Settings.Secure.SYS_FREE_STORAGE_LOG_INTERVAL,
+ long freeMemLogInterval = Settings.Global.getLong(mContentResolver,
+ Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL,
DEFAULT_FREE_STORAGE_LOG_INTERVAL_IN_MINUTES)*60*1000;
//log the amount of free memory in event log
long currTime = SystemClock.elapsedRealtime();
@@ -190,8 +190,8 @@ public class DeviceStorageMonitorService extends Binder {
mFreeMem, mFreeSystem, mFreeCache);
}
// Read the reporting threshold from secure settings
- long threshold = Settings.Secure.getLong(mContentResolver,
- Settings.Secure.DISK_FREE_CHANGE_REPORTING_THRESHOLD,
+ long threshold = Settings.Global.getLong(mContentResolver,
+ Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD,
DEFAULT_DISK_FREE_CHANGE_REPORTING_THRESHOLD);
// If mFree changed significantly log the new value
long delta = mFreeMem - mLastReportedFreeMem;
@@ -309,15 +309,15 @@ public class DeviceStorageMonitorService extends Binder {
* any way
*/
private long getMemThreshold() {
- long value = Settings.Secure.getInt(
+ long value = Settings.Global.getInt(
mContentResolver,
- Settings.Secure.SYS_STORAGE_THRESHOLD_PERCENTAGE,
+ Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE,
DEFAULT_THRESHOLD_PERCENTAGE);
if(localLOGV) Slog.v(TAG, "Threshold Percentage="+value);
value = (value*mTotalMemory)/100;
- long maxValue = Settings.Secure.getInt(
+ long maxValue = Settings.Global.getInt(
mContentResolver,
- Settings.Secure.SYS_STORAGE_THRESHOLD_MAX_BYTES,
+ Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES,
DEFAULT_THRESHOLD_MAX_BYTES);
//evaluate threshold value
return value < maxValue ? value : maxValue;
@@ -329,9 +329,9 @@ public class DeviceStorageMonitorService extends Binder {
* any way
*/
private int getMemFullThreshold() {
- int value = Settings.Secure.getInt(
+ int value = Settings.Global.getInt(
mContentResolver,
- Settings.Secure.SYS_STORAGE_FULL_THRESHOLD_BYTES,
+ Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES,
DEFAULT_FULL_THRESHOLD_BYTES);
if(localLOGV) Slog.v(TAG, "Full Threshold Bytes="+value);
return value;
diff --git a/services/java/com/android/server/DropBoxManagerService.java b/services/java/com/android/server/DropBoxManagerService.java
index 0b12410..5008270 100644
--- a/services/java/com/android/server/DropBoxManagerService.java
+++ b/services/java/com/android/server/DropBoxManagerService.java
@@ -146,7 +146,7 @@ public final class DropBoxManagerService extends IDropBoxManagerService.Stub {
context.registerReceiver(mReceiver, filter);
mContentResolver.registerContentObserver(
- Settings.Secure.CONTENT_URI, true,
+ Settings.Global.CONTENT_URI, true,
new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
@@ -265,8 +265,8 @@ public final class DropBoxManagerService extends IDropBoxManagerService.Stub {
}
public boolean isTagEnabled(String tag) {
- return !"disabled".equals(Settings.Secure.getString(
- mContentResolver, Settings.Secure.DROPBOX_TAG_PREFIX + tag));
+ return !"disabled".equals(Settings.Global.getString(
+ mContentResolver, Settings.Global.DROPBOX_TAG_PREFIX + tag));
}
public synchronized DropBoxManager.Entry getNextEntry(String tag, long millis) {
@@ -688,10 +688,10 @@ public final class DropBoxManagerService extends IDropBoxManagerService.Stub {
private synchronized long trimToFit() {
// Expunge aged items (including tombstones marking deleted data).
- int ageSeconds = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.DROPBOX_AGE_SECONDS, DEFAULT_AGE_SECONDS);
- int maxFiles = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.DROPBOX_MAX_FILES, DEFAULT_MAX_FILES);
+ int ageSeconds = Settings.Global.getInt(mContentResolver,
+ Settings.Global.DROPBOX_AGE_SECONDS, DEFAULT_AGE_SECONDS);
+ int maxFiles = Settings.Global.getInt(mContentResolver,
+ Settings.Global.DROPBOX_MAX_FILES, DEFAULT_MAX_FILES);
long cutoffMillis = System.currentTimeMillis() - ageSeconds * 1000;
while (!mAllFiles.contents.isEmpty()) {
EntryFile entry = mAllFiles.contents.first();
@@ -710,12 +710,12 @@ public final class DropBoxManagerService extends IDropBoxManagerService.Stub {
long uptimeMillis = SystemClock.uptimeMillis();
if (uptimeMillis > mCachedQuotaUptimeMillis + QUOTA_RESCAN_MILLIS) {
- int quotaPercent = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.DROPBOX_QUOTA_PERCENT, DEFAULT_QUOTA_PERCENT);
- int reservePercent = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.DROPBOX_RESERVE_PERCENT, DEFAULT_RESERVE_PERCENT);
- int quotaKb = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.DROPBOX_QUOTA_KB, DEFAULT_QUOTA_KB);
+ int quotaPercent = Settings.Global.getInt(mContentResolver,
+ Settings.Global.DROPBOX_QUOTA_PERCENT, DEFAULT_QUOTA_PERCENT);
+ int reservePercent = Settings.Global.getInt(mContentResolver,
+ Settings.Global.DROPBOX_RESERVE_PERCENT, DEFAULT_RESERVE_PERCENT);
+ int quotaKb = Settings.Global.getInt(mContentResolver,
+ Settings.Global.DROPBOX_QUOTA_KB, DEFAULT_QUOTA_KB);
mStatFs.restat(mDropBoxDir.getPath());
int available = mStatFs.getAvailableBlocks();
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 6952d72..ec58e43 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -171,8 +171,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
final SettingsObserver mSettingsObserver;
final IWindowManager mIWindowManager;
final HandlerCaller mCaller;
- private final InputMethodFileManager mFileManager;
- private final InputMethodAndSubtypeListManager mImListManager;
+ private InputMethodFileManager mFileManager;
+ private InputMethodAndSubtypeListManager mImListManager;
private final HardKeyboardListener mHardKeyboardListener;
private final WindowManagerService mWindowManagerService;
@@ -625,11 +625,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
mShowOngoingImeSwitcherForPhones = false;
- synchronized (mMethodMap) {
- mFileManager = new InputMethodFileManager(mMethodMap);
- }
- mImListManager = new InputMethodAndSubtypeListManager(context, this);
-
final IntentFilter broadcastFilter = new IntentFilter();
broadcastFilter.addAction(Intent.ACTION_SCREEN_ON);
broadcastFilter.addAction(Intent.ACTION_SCREEN_OFF);
@@ -643,7 +638,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
new IUserSwitchObserver.Stub() {
@Override
public void onUserSwitching(int newUserId, IRemoteCallback reply) {
- switchUser(newUserId);
+ synchronized(mMethodMap) {
+ switchUserLocked(newUserId);
+ }
if (reply != null) {
try {
reply.sendResult(null);
@@ -665,6 +662,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// mSettings should be created before buildInputMethodListLocked
mSettings = new InputMethodSettings(
mRes, context.getContentResolver(), mMethodMap, mMethodList, userId);
+ mFileManager = new InputMethodFileManager(mMethodMap, userId);
+ mImListManager = new InputMethodAndSubtypeListManager(context, this);
// Just checking if defaultImiId is empty or not
final String defaultImiId = mSettings.getSelectedInputMethod();
@@ -736,6 +735,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if (DEBUG) {
Slog.i(TAG, "Locale has been changed to " + newLocale);
}
+ // InputMethodAndSubtypeListManager should be reset when the locale is changed.
+ mImListManager = new InputMethodAndSubtypeListManager(mContext, this);
buildInputMethodListLocked(mMethodList, mMethodMap);
if (!updateOnlyWhenLocaleChanged) {
final String selectedImiId = mSettings.getSelectedInputMethod();
@@ -744,6 +745,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// set the current ime to the proper one.
resetDefaultImeLocked(mContext);
}
+ } else {
+ // If the locale is changed, needs to reset the default ime
+ resetDefaultImeLocked(mContext);
}
updateFromSettingsLocked();
mLastSystemLocale = newLocale;
@@ -761,8 +765,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
resetAllInternalStateLocked(true);
}
- private void switchUser(int newUserId) {
+ private void switchUserLocked(int newUserId) {
mSettings.setCurrentUserId(newUserId);
+ // InputMethodFileManager should be reset when the user is changed
+ mFileManager = new InputMethodFileManager(mMethodMap, newUserId);
resetAllInternalStateLocked(false);
}
@@ -3816,6 +3822,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
}
+ // TODO: Cache the state for each user and reset when the cached user is removed.
private static class InputMethodFileManager {
private static final String SYSTEM_PATH = "system";
private static final String INPUT_METHOD_PATH = "inputmethod";
@@ -3834,12 +3841,14 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
private final HashMap<String, InputMethodInfo> mMethodMap;
private final HashMap<String, List<InputMethodSubtype>> mAdditionalSubtypesMap =
new HashMap<String, List<InputMethodSubtype>>();
- public InputMethodFileManager(HashMap<String, InputMethodInfo> methodMap) {
+ public InputMethodFileManager(HashMap<String, InputMethodInfo> methodMap, int userId) {
if (methodMap == null) {
throw new NullPointerException("methodMap is null");
}
mMethodMap = methodMap;
- final File systemDir = new File(Environment.getDataDirectory(), SYSTEM_PATH);
+ final File systemDir = userId == UserHandle.USER_OWNER
+ ? new File(Environment.getDataDirectory(), SYSTEM_PATH)
+ : Environment.getUserSystemDirectory(userId);
final File inputMethodDir = new File(systemDir, INPUT_METHOD_PATH);
if (!inputMethodDir.mkdirs()) {
Slog.w(TAG, "Couldn't create dir.: " + inputMethodDir.getAbsolutePath());
diff --git a/services/java/com/android/server/NsdService.java b/services/java/com/android/server/NsdService.java
index 2a7a2eb..1b9742c 100644
--- a/services/java/com/android/server/NsdService.java
+++ b/services/java/com/android/server/NsdService.java
@@ -131,7 +131,7 @@ public class NsdService extends INsdManager.Stub {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.NSD_ON),
+ Settings.Global.getUriFor(Settings.Global.NSD_ON),
false, contentObserver);
}
@@ -433,7 +433,7 @@ public class NsdService extends INsdManager.Stub {
public void setEnabled(boolean enable) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL,
"NsdService");
- Settings.Secure.putInt(mContentResolver, Settings.Secure.NSD_ON, enable ? 1 : 0);
+ Settings.Global.putInt(mContentResolver, Settings.Global.NSD_ON, enable ? 1 : 0);
if (enable) {
mNsdStateMachine.sendMessage(NsdManager.ENABLE);
} else {
@@ -453,7 +453,7 @@ public class NsdService extends INsdManager.Stub {
}
private boolean isNsdEnabled() {
- boolean ret = Settings.Secure.getInt(mContentResolver, Settings.Secure.NSD_ON, 1) == 1;
+ boolean ret = Settings.Global.getInt(mContentResolver, Settings.Global.NSD_ON, 1) == 1;
if (DBG) Slog.d(TAG, "Network service discovery enabled " + ret);
return ret;
}
diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/java/com/android/server/ServiceWatcher.java
index 0dfaa05..e99949b 100644
--- a/services/java/com/android/server/ServiceWatcher.java
+++ b/services/java/com/android/server/ServiceWatcher.java
@@ -170,7 +170,7 @@ public class ServiceWatcher implements ServiceConnection {
}
if (D) Log.d(mTag, "binding " + packageName + " (version " + version + ")");
mContext.bindService(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND
- | Context.BIND_ALLOW_OOM_MANAGEMENT);
+ | Context.BIND_ALLOW_OOM_MANAGEMENT | Context.BIND_NOT_VISIBLE);
}
private boolean isSignatureMatch(Signature[] signatures) {
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java
index b567992..87b0eb3 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/java/com/android/server/StatusBarManagerService.java
@@ -117,45 +117,34 @@ public class StatusBarManagerService extends IStatusBarService.Stub
// ================================================================================
// From IStatusBarService
// ================================================================================
- public void expandNotifications() {
+ public void expandNotificationsPanel() {
enforceExpandStatusBar();
if (mBar != null) {
try {
- mBar.animateExpandNotifications();
+ mBar.animateExpandNotificationsPanel();
} catch (RemoteException ex) {
}
}
}
- public void collapseNotifications() {
+ public void collapsePanels() {
enforceExpandStatusBar();
if (mBar != null) {
try {
- mBar.animateCollapseNotifications();
+ mBar.animateCollapsePanels();
} catch (RemoteException ex) {
}
}
}
- public void expandQuickSettings() {
+ public void expandSettingsPanel() {
enforceExpandStatusBar();
if (mBar != null) {
try {
- mBar.animateExpandQuickSettings();
- } catch (RemoteException ex) {
- }
- }
- }
-
- public void collapseQuickSettings() {
- enforceExpandStatusBar();
-
- if (mBar != null) {
- try {
- mBar.animateCollapseQuickSettings();
+ mBar.animateExpandSettingsPanel();
} catch (RemoteException ex) {
}
}
@@ -620,8 +609,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
String action = intent.getAction();
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)
|| Intent.ACTION_SCREEN_OFF.equals(action)) {
- collapseNotifications();
- collapseQuickSettings();
+ collapsePanels();
}
/*
else if (Telephony.Intents.SPN_STRINGS_UPDATED_ACTION.equals(action)) {
diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java
index f36d73a..75eb3c4 100644
--- a/services/java/com/android/server/ThrottleService.java
+++ b/services/java/com/android/server/ThrottleService.java
@@ -211,20 +211,20 @@ public class ThrottleService extends IThrottleManager.Stub {
void register(Context context) {
ContentResolver resolver = context.getContentResolver();
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_POLLING_SEC), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_THRESHOLD_BYTES), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_VALUE_KBITSPS), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_RESET_DAY), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_NOTIFICATION_TYPE), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_HELP_URI), false, this);
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.THROTTLE_MAX_NTP_CACHE_AGE_SEC), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_POLLING_SEC), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_THRESHOLD_BYTES), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_VALUE_KBITSPS), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_RESET_DAY), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_NOTIFICATION_TYPE), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_HELP_URI), false, this);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.THROTTLE_MAX_NTP_CACHE_AGE_SEC), false, this);
}
void unregister(Context context) {
@@ -297,8 +297,8 @@ public class ThrottleService extends IThrottleManager.Stub {
public String getHelpUri() {
enforceAccessPermission();
- return Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_HELP_URI);
+ return Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_HELP_URI);
}
// TODO - fetch for the iface
@@ -436,18 +436,18 @@ public class ThrottleService extends IThrottleManager.Stub {
int pollingPeriod = mContext.getResources().getInteger(
R.integer.config_datause_polling_period_sec);
- mPolicyPollPeriodSec = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_POLLING_SEC, pollingPeriod);
+ mPolicyPollPeriodSec = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_POLLING_SEC, pollingPeriod);
// TODO - remove testing stuff?
long defaultThreshold = mContext.getResources().getInteger(
R.integer.config_datause_threshold_bytes);
int defaultValue = mContext.getResources().getInteger(
R.integer.config_datause_throttle_kbitsps);
- long threshold = Settings.Secure.getLong(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_THRESHOLD_BYTES, defaultThreshold);
- int value = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_VALUE_KBITSPS, defaultValue);
+ long threshold = Settings.Global.getLong(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_THRESHOLD_BYTES, defaultThreshold);
+ int value = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_VALUE_KBITSPS, defaultValue);
mPolicyThreshold.set(threshold);
mPolicyThrottleValue.set(value);
@@ -456,14 +456,14 @@ public class ThrottleService extends IThrottleManager.Stub {
mPolicyThreshold.set(TESTING_THRESHOLD);
}
- mPolicyResetDay = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_RESET_DAY, -1);
+ mPolicyResetDay = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_RESET_DAY, -1);
if (mPolicyResetDay == -1 ||
((mPolicyResetDay < 1) || (mPolicyResetDay > 28))) {
Random g = new Random();
mPolicyResetDay = 1 + g.nextInt(28); // 1-28
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_RESET_DAY, mPolicyResetDay);
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_RESET_DAY, mPolicyResetDay);
}
if (mIface == null) {
mPolicyThreshold.set(0);
@@ -471,11 +471,11 @@ public class ThrottleService extends IThrottleManager.Stub {
int defaultNotificationType = mContext.getResources().getInteger(
R.integer.config_datause_notification_type);
- mPolicyNotificationsAllowedMask = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_NOTIFICATION_TYPE, defaultNotificationType);
+ mPolicyNotificationsAllowedMask = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_NOTIFICATION_TYPE, defaultNotificationType);
- final int maxNtpCacheAgeSec = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.THROTTLE_MAX_NTP_CACHE_AGE_SEC,
+ final int maxNtpCacheAgeSec = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THROTTLE_MAX_NTP_CACHE_AGE_SEC,
(int) (MAX_NTP_CACHE_AGE / 1000));
mMaxNtpCacheAge = maxNtpCacheAgeSec * 1000;
diff --git a/services/java/com/android/server/UiModeManagerService.java b/services/java/com/android/server/UiModeManagerService.java
index 07e8f18..3b8caba 100644
--- a/services/java/com/android/server/UiModeManagerService.java
+++ b/services/java/com/android/server/UiModeManagerService.java
@@ -25,7 +25,6 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.app.UiModeManager;
-import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -497,7 +496,8 @@ class UiModeManagerService extends IUiModeManager.Stub {
sendConfigurationLocked();
// If we did not start a dock app, then start dreaming if supported.
- if (!dockAppStarted && isScreenSaverEnabled() && isScreenSaverActivatedOnDock()) {
+ if (category != null && !dockAppStarted
+ && isScreenSaverEnabled() && isScreenSaverActivatedOnDock()) {
Slog.i(TAG, "Activating dream while docked.");
try {
IDreamManager dreamManagerService = IDreamManager.Stub.asInterface(
diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java
index 9edfad6..9dbe503 100644
--- a/services/java/com/android/server/Watchdog.java
+++ b/services/java/com/android/server/Watchdog.java
@@ -33,7 +33,6 @@ import android.os.Process;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.provider.Settings;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
@@ -118,9 +117,7 @@ public class Watchdog extends Thread {
case MONITOR: {
// See if we should force a reboot.
int rebootInterval = mReqRebootInterval >= 0
- ? mReqRebootInterval : Settings.Secure.getInt(
- mResolver, Settings.Secure.REBOOT_INTERVAL,
- REBOOT_DEFAULT_INTERVAL);
+ ? mReqRebootInterval : REBOOT_DEFAULT_INTERVAL;
if (mRebootInterval != rebootInterval) {
mRebootInterval = rebootInterval;
// We have been running long enough that a reboot can
@@ -226,9 +223,7 @@ public class Watchdog extends Thread {
void checkReboot(boolean fromAlarm) {
int rebootInterval = mReqRebootInterval >= 0 ? mReqRebootInterval
- : Settings.Secure.getInt(
- mResolver, Settings.Secure.REBOOT_INTERVAL,
- REBOOT_DEFAULT_INTERVAL);
+ : REBOOT_DEFAULT_INTERVAL;
mRebootInterval = rebootInterval;
if (rebootInterval <= 0) {
// No reboot interval requested.
@@ -238,17 +233,11 @@ public class Watchdog extends Thread {
}
long rebootStartTime = mReqRebootStartTime >= 0 ? mReqRebootStartTime
- : Settings.Secure.getLong(
- mResolver, Settings.Secure.REBOOT_START_TIME,
- REBOOT_DEFAULT_START_TIME);
+ : REBOOT_DEFAULT_START_TIME;
long rebootWindowMillis = (mReqRebootWindow >= 0 ? mReqRebootWindow
- : Settings.Secure.getLong(
- mResolver, Settings.Secure.REBOOT_WINDOW,
- REBOOT_DEFAULT_WINDOW)) * 1000;
+ : REBOOT_DEFAULT_WINDOW) * 1000;
long recheckInterval = (mReqRecheckInterval >= 0 ? mReqRecheckInterval
- : Settings.Secure.getLong(
- mResolver, Settings.Secure.MEMCHECK_RECHECK_INTERVAL,
- MEMCHECK_DEFAULT_RECHECK_INTERVAL)) * 1000;
+ : MEMCHECK_DEFAULT_RECHECK_INTERVAL) * 1000;
retrieveBrutalityAmount();
@@ -325,13 +314,9 @@ public class Watchdog extends Thread {
*/
void retrieveBrutalityAmount() {
mMinScreenOff = (mReqMinScreenOff >= 0 ? mReqMinScreenOff
- : Settings.Secure.getInt(
- mResolver, Settings.Secure.MEMCHECK_MIN_SCREEN_OFF,
- MEMCHECK_DEFAULT_MIN_SCREEN_OFF)) * 1000;
+ : MEMCHECK_DEFAULT_MIN_SCREEN_OFF) * 1000;
mMinAlarm = (mReqMinNextAlarm >= 0 ? mReqMinNextAlarm
- : Settings.Secure.getInt(
- mResolver, Settings.Secure.MEMCHECK_MIN_ALARM,
- MEMCHECK_DEFAULT_MIN_ALARM)) * 1000;
+ : MEMCHECK_DEFAULT_MIN_ALARM) * 1000;
}
/**
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 25f98de..2f57eb0 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -56,6 +56,7 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.TextUtils.SimpleStringSplitter;
@@ -108,9 +109,16 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private static final String LOG_TAG = "AccessibilityManagerService";
+ // TODO: This is arbitrary. When there is time implement this by watching
+ // when that accessibility services are bound.
+ private static final int WAIT_FOR_USER_STATE_FULLY_INITIALIZED_MILLIS = 5000;
+
private static final String FUNCTION_REGISTER_UI_TEST_AUTOMATION_SERVICE =
"registerUiTestAutomationService";
+ private static final String TEMPORARY_ENABLE_ACCESSIBILITY_UNTIL_KEYGUARD_REMOVED =
+ "temporaryEnableAccessibilityStateUntilKeyguardRemoved";
+
private static final char COMPONENT_NAME_SEPARATOR = ':';
private static final int OWN_PROCESS_ID = android.os.Process.myPid();
@@ -157,6 +165,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private final SparseArray<UserState> mUserStates = new SparseArray<UserState>();
+ private final TempUserStateChangeMemento mTempStateChangeForCurrentUserMemento =
+ new TempUserStateChangeMemento();
+
private int mCurrentUserId = UserHandle.USER_OWNER;
private UserState getCurrentUserStateLocked() {
@@ -268,12 +279,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
// package changes
monitor.register(mContext, null, UserHandle.ALL, true);
- // user change
- IntentFilter userFilter = new IntentFilter();
- userFilter.addAction(Intent.ACTION_USER_SWITCHED);
- userFilter.addAction(Intent.ACTION_USER_REMOVED);
+ // user change and unlock
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+ intentFilter.addAction(Intent.ACTION_USER_REMOVED);
+ intentFilter.addAction(Intent.ACTION_USER_PRESENT);
- mContext.registerReceiver(new BroadcastReceiver() {
+ mContext.registerReceiverAsUser(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
@@ -281,9 +293,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
switchUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
} else if (Intent.ACTION_USER_REMOVED.equals(action)) {
removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ } else if (Intent.ACTION_USER_PRESENT.equals(action)) {
+ restoreStateFromMementoIfNeeded();
}
}
- }, userFilter);
+ }, UserHandle.ALL, intentFilter, null, null);
}
public int addClient(IAccessibilityManagerClient client, int userId) {
@@ -510,6 +524,37 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
}
}
+ public void temporaryEnableAccessibilityStateUntilKeyguardRemoved(
+ ComponentName service, boolean touchExplorationEnabled) {
+ mSecurityPolicy.enforceCallingPermission(
+ Manifest.permission.TEMPORARY_ENABLE_ACCESSIBILITY,
+ TEMPORARY_ENABLE_ACCESSIBILITY_UNTIL_KEYGUARD_REMOVED);
+ try {
+ if (!mWindowManagerService.isKeyguardLocked()) {
+ return;
+ }
+ } catch (RemoteException re) {
+ return;
+ }
+ synchronized (mLock) {
+ UserState userState = getCurrentUserStateLocked();
+ // Stash the old state so we can restore it when the keyguard is gone.
+ mTempStateChangeForCurrentUserMemento.initialize(mCurrentUserId, getCurrentUserStateLocked());
+ // Set the temporary state.
+ userState.mIsAccessibilityEnabled = true;
+ userState.mIsTouchExplorationEnabled= touchExplorationEnabled;
+ userState.mIsDisplayMagnificationEnabled = false;
+ userState.mEnabledServices.clear();
+ userState.mEnabledServices.add(service);
+ userState.mTouchExplorationGrantedServices.clear();
+ userState.mTouchExplorationGrantedServices.add(service);
+ // Update the internal state.
+ performServiceManagementLocked(userState);
+ updateInputFilterLocked(userState);
+ scheduleSendStateToClientsLocked(userState);
+ }
+ }
+
public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) {
synchronized (mLock) {
// Automation service is not bound, so pretend it died to perform clean up.
@@ -600,9 +645,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private void switchUser(int userId) {
synchronized (mLock) {
- if (userId == mCurrentUserId) {
- return;
- }
+ // The user switched so we do not need to restore the current user
+ // state since we will fully rebuild it when he becomes current again.
+ mTempStateChangeForCurrentUserMemento.clear();
// Disconnect from services for the old user.
UserState oldUserState = getUserStateLocked(mCurrentUserId);
@@ -620,6 +665,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
// Recreate the internal state for the new user.
mMainHandler.obtainMessage(MainHandler.MSG_SEND_RECREATE_INTERNAL_STATE,
mCurrentUserId, 0).sendToTarget();
+
+ // Schedule announcement of the current user if needed.
+ mMainHandler.sendEmptyMessageDelayed(MainHandler.MSG_ANNOUNCE_NEW_USER_IF_NEEDED,
+ WAIT_FOR_USER_STATE_FULLY_INITIALIZED_MILLIS);
}
}
@@ -629,6 +678,21 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
}
}
+ private void restoreStateFromMementoIfNeeded() {
+ synchronized (mLock) {
+ if (mTempStateChangeForCurrentUserMemento.mUserId != UserHandle.USER_NULL) {
+ UserState userState = getCurrentUserStateLocked();
+ // Restore the state from the memento.
+ mTempStateChangeForCurrentUserMemento.applyTo(userState);
+ mTempStateChangeForCurrentUserMemento.clear();
+ // Update the internal state.
+ performServiceManagementLocked(userState);
+ updateInputFilterLocked(userState);
+ scheduleSendStateToClientsLocked(userState);
+ }
+ }
+ }
+
private Service getQueryBridge() {
if (mQueryBridge == null) {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
@@ -763,7 +827,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private void tryAddServiceLocked(Service service, int userId) {
try {
UserState userState = getUserStateLocked(userId);
- if (userState.mServices.contains(service) || !service.isConfigured()) {
+ if (userState.mServices.contains(service)) {
return;
}
service.linkToOwnDeath();
@@ -812,7 +876,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private boolean canDispathEventLocked(Service service, AccessibilityEvent event,
int handledFeedbackTypes) {
- if (!service.isConfigured()) {
+ if (!service.canReceiveEvents()) {
return false;
}
@@ -1076,6 +1140,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
handleDisplayMagnificationEnabledSettingChangedLocked(userState);
handleAccessibilityEnabledSettingChangedLocked(userState);
+ performServiceManagementLocked(userState);
updateInputFilterLocked(userState);
scheduleSendStateToClientsLocked(userState);
}
@@ -1084,6 +1149,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
userState.mIsAccessibilityEnabled = Settings.Secure.getIntForUser(
mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, 0, userState.mUserId) == 1;
+ }
+
+ private void performServiceManagementLocked(UserState userState) {
if (userState.mIsAccessibilityEnabled ) {
manageServicesLocked(userState);
} else {
@@ -1124,7 +1192,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private void tryEnableTouchExplorationLocked(final Service service) {
UserState userState = getUserStateLocked(service.mUserId);
- if (!userState.mIsTouchExplorationEnabled && service.mRequestTouchExplorationMode) {
+ if (!userState.mIsTouchExplorationEnabled && service.mRequestTouchExplorationMode
+ && service.canReceiveEvents()) {
final boolean canToggleTouchExploration =
userState.mTouchExplorationGrantedServices.contains(service.mComponentName);
if (!service.mIsAutomation && !canToggleTouchExploration) {
@@ -1137,6 +1206,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
}
private void tryDisableTouchExplorationLocked(Service service) {
+ if (!service.canReceiveEvents()) {
+ return;
+ }
UserState userState = getUserStateLocked(service.mUserId);
if (userState.mIsTouchExplorationEnabled) {
final int serviceCount = userState.mServices.size();
@@ -1186,6 +1258,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
public static final int MSG_SEND_CLEARED_STATE_TO_CLIENTS_FOR_USER = 3;
public static final int MSG_SEND_RECREATE_INTERNAL_STATE = 4;
public static final int MSG_UPDATE_ACTIVE_WINDOW = 5;
+ public static final int MSG_ANNOUNCE_NEW_USER_IF_NEEDED = 6;
public MainHandler(Looper looper) {
super(looper);
@@ -1226,6 +1299,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
final int eventType = msg.arg2;
mSecurityPolicy.updateActiveWindow(windowId, eventType);
} break;
+ case MSG_ANNOUNCE_NEW_USER_IF_NEEDED: {
+ announceNewUserIfNeeded();
+ } break;
+ }
+ }
+
+ private void announceNewUserIfNeeded() {
+ synchronized (mLock) {
+ UserState userState = getCurrentUserStateLocked();
+ if (userState.mIsAccessibilityEnabled) {
+ UserManager userManager = (UserManager) mContext.getSystemService(
+ Context.USER_SERVICE);
+ String message = mContext.getString(R.string.user_switched,
+ userManager.getUserInfo(mCurrentUserId).name);
+ AccessibilityEvent event = AccessibilityEvent.obtain(
+ AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ event.getText().add(message);
+ sendAccessibilityEvent(event, mCurrentUserId);
+ }
}
}
@@ -1376,7 +1468,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
// If this service is up and running we may have to enable touch
// exploration, otherwise this will happen when the service connects.
synchronized (mLock) {
- if (isConfigured()) {
+ if (canReceiveEvents()) {
if (mRequestTouchExplorationMode) {
tryEnableTouchExplorationLocked(this);
} else {
@@ -1417,13 +1509,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
return false;
}
- /**
- * Returns if the service is configured i.e. at least event types of interest
- * and feedback type must be set.
- *
- * @return True if the service is configured, false otherwise.
- */
- public boolean isConfigured() {
+ public boolean canReceiveEvents() {
return (mEventTypes != 0 && mFeedbackType != 0 && mService != null);
}
@@ -1940,7 +2026,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
StatusBarManager statusBarManager = (StatusBarManager) mContext.getSystemService(
android.app.Service.STATUS_BAR_SERVICE);
- statusBarManager.expandNotifications();
+ statusBarManager.expandNotificationsPanel();
Binder.restoreCallingIdentity(token);
}
@@ -1950,7 +2036,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
StatusBarManager statusBarManager = (StatusBarManager) mContext.getSystemService(
android.app.Service.STATUS_BAR_SERVICE);
- statusBarManager.expandQuickSettings();
+ statusBarManager.expandSettingsPanel();
Binder.restoreCallingIdentity(token);
}
@@ -2229,6 +2315,46 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
}
}
+ private class TempUserStateChangeMemento {
+ public int mUserId = UserHandle.USER_NULL;
+ public boolean mIsAccessibilityEnabled;
+ public boolean mIsTouchExplorationEnabled;
+ public boolean mIsDisplayMagnificationEnabled;
+ public final Set<ComponentName> mEnabledServices = new HashSet<ComponentName>();
+ public final Set<ComponentName> mTouchExplorationGrantedServices =
+ new HashSet<ComponentName>();
+
+ public void initialize(int userId, UserState userState) {
+ mUserId = userId;
+ mIsAccessibilityEnabled = userState.mIsAccessibilityEnabled;
+ mIsTouchExplorationEnabled = userState.mIsTouchExplorationEnabled;
+ mIsDisplayMagnificationEnabled = userState.mIsDisplayMagnificationEnabled;
+ mEnabledServices.clear();
+ mEnabledServices.addAll(userState.mEnabledServices);
+ mTouchExplorationGrantedServices.clear();
+ mTouchExplorationGrantedServices.addAll(userState.mTouchExplorationGrantedServices);
+ }
+
+ public void applyTo(UserState userState) {
+ userState.mIsAccessibilityEnabled = mIsAccessibilityEnabled;
+ userState.mIsTouchExplorationEnabled = mIsTouchExplorationEnabled;
+ userState.mIsDisplayMagnificationEnabled = mIsDisplayMagnificationEnabled;
+ userState.mEnabledServices.clear();
+ userState.mEnabledServices.addAll(mEnabledServices);
+ userState.mTouchExplorationGrantedServices.clear();
+ userState.mTouchExplorationGrantedServices.addAll(mTouchExplorationGrantedServices);
+ }
+
+ public void clear() {
+ mUserId = UserHandle.USER_NULL;
+ mIsAccessibilityEnabled = false;
+ mIsTouchExplorationEnabled = false;
+ mIsDisplayMagnificationEnabled = false;
+ mEnabledServices.clear();
+ mTouchExplorationGrantedServices.clear();
+ }
+ }
+
private final class AccessibilityContentObserver extends ContentObserver {
private final Uri mAccessibilityEnabledUri = Settings.Secure.getUriFor(
@@ -2272,6 +2398,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
if (mUiAutomationService == null) {
UserState userState = getCurrentUserStateLocked();
handleAccessibilityEnabledSettingChangedLocked(userState);
+ performServiceManagementLocked(userState);
updateInputFilterLocked(userState);
scheduleSendStateToClientsLocked(userState);
}
diff --git a/services/java/com/android/server/accessibility/TouchExplorer.java b/services/java/com/android/server/accessibility/TouchExplorer.java
index 921bed7..542cc07 100644
--- a/services/java/com/android/server/accessibility/TouchExplorer.java
+++ b/services/java/com/android/server/accessibility/TouchExplorer.java
@@ -1300,6 +1300,11 @@ class TouchExplorer implements EventStreamTransformation {
@Override
public void run() {
+ // Announce the end of gesture recognition.
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_END);
+ // Clearing puts is in touch exploration state with a finger already
+ // down, so announce the transition to exploration state.
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
clear();
}
}
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 370d427..bfefe67 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -8464,8 +8464,8 @@ public final class ActivityManagerService extends ActivityManagerNative
sb.append(crashInfo.stackTrace);
}
- String setting = Settings.Secure.ERROR_LOGCAT_PREFIX + dropboxTag;
- int lines = Settings.Secure.getInt(mContext.getContentResolver(), setting, 0);
+ String setting = Settings.Global.ERROR_LOGCAT_PREFIX + dropboxTag;
+ int lines = Settings.Global.getInt(mContext.getContentResolver(), setting, 0);
if (lines > 0) {
sb.append("\n");
@@ -11514,8 +11514,9 @@ public final class ActivityManagerService extends ActivityManagerNative
* Prevent non-system code (defined here to be non-persistent
* processes) from sending protected broadcasts.
*/
- if (callingUid == Process.SYSTEM_UID || callingUid == Process.PHONE_UID
- || callingUid == Process.SHELL_UID || callingUid == Process.BLUETOOTH_UID ||
+ int callingAppId = UserHandle.getAppId(callingUid);
+ if (callingAppId == Process.SYSTEM_UID || callingAppId == Process.PHONE_UID
+ || callingAppId == Process.SHELL_UID || callingAppId == Process.BLUETOOTH_UID ||
callingUid == 0) {
// Always okay.
} else if (callerApp == null || !callerApp.persistent) {
diff --git a/services/java/com/android/server/display/DisplayManagerService.java b/services/java/com/android/server/display/DisplayManagerService.java
index 85f3b56..f348cb6 100644
--- a/services/java/com/android/server/display/DisplayManagerService.java
+++ b/services/java/com/android/server/display/DisplayManagerService.java
@@ -352,11 +352,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public void scanWifiDisplays() {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
-
final long token = Binder.clearCallingIdentity();
try {
synchronized (mSyncRoot) {
@@ -371,19 +366,16 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public void connectWifiDisplay(String address) {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
if (address == null) {
throw new IllegalArgumentException("address must not be null");
}
+ final boolean trusted = canCallerConfigureWifiDisplay();
final long token = Binder.clearCallingIdentity();
try {
synchronized (mSyncRoot) {
if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestConnectLocked(address);
+ mWifiDisplayAdapter.requestConnectLocked(address, trusted);
}
}
} finally {
@@ -393,11 +385,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public void disconnectWifiDisplay() {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
-
final long token = Binder.clearCallingIdentity();
try {
synchronized (mSyncRoot) {
@@ -412,13 +399,13 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public void renameWifiDisplay(String address, String alias) {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
if (address == null) {
throw new IllegalArgumentException("address must not be null");
}
+ if (!canCallerConfigureWifiDisplay()) {
+ throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission to "
+ + "rename a wifi display.");
+ }
final long token = Binder.clearCallingIdentity();
try {
@@ -434,13 +421,13 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public void forgetWifiDisplay(String address) {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
if (address == null) {
throw new IllegalArgumentException("address must not be null");
}
+ if (!canCallerConfigureWifiDisplay()) {
+ throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission to "
+ + "forget a wifi display.");
+ }
final long token = Binder.clearCallingIdentity();
try {
@@ -456,11 +443,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
@Override // Binder call
public WifiDisplayStatus getWifiDisplayStatus() {
- if (mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CONFIGURE_WIFI_DISPLAY permission");
- }
-
final long token = Binder.clearCallingIdentity();
try {
synchronized (mSyncRoot) {
@@ -475,6 +457,11 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
+ private boolean canCallerConfigureWifiDisplay() {
+ return mContext.checkCallingPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
private void registerDefaultDisplayAdapter() {
// Register default display adapter.
synchronized (mSyncRoot) {
diff --git a/services/java/com/android/server/display/WifiDisplayAdapter.java b/services/java/com/android/server/display/WifiDisplayAdapter.java
index 1d50ded..4a89be7 100644
--- a/services/java/com/android/server/display/WifiDisplayAdapter.java
+++ b/services/java/com/android/server/display/WifiDisplayAdapter.java
@@ -27,6 +27,7 @@ import android.hardware.display.WifiDisplayStatus;
import android.media.RemoteDisplay;
import android.os.Handler;
import android.os.IBinder;
+import android.util.Slog;
import android.view.Surface;
import java.io.PrintWriter;
@@ -121,7 +122,17 @@ final class WifiDisplayAdapter extends DisplayAdapter {
});
}
- public void requestConnectLocked(final String address) {
+ public void requestConnectLocked(final String address, final boolean trusted) {
+ if (!trusted) {
+ synchronized (getSyncRoot()) {
+ if (!isRememberedDisplayLocked(address)) {
+ Slog.w(TAG, "Ignoring request by an untrusted client to connect to "
+ + "an unknown wifi display: " + address);
+ return;
+ }
+ }
+ }
+
getHandler().post(new Runnable() {
@Override
public void run() {
@@ -132,6 +143,15 @@ final class WifiDisplayAdapter extends DisplayAdapter {
});
}
+ private boolean isRememberedDisplayLocked(String address) {
+ for (WifiDisplay display : mRememberedDisplays) {
+ if (display.getDeviceAddress().equals(address)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public void requestDisconnectLocked() {
getHandler().post(new Runnable() {
@Override
@@ -241,10 +261,8 @@ final class WifiDisplayAdapter extends DisplayAdapter {
getWifiDisplayStatusLocked());
}
- // Send protected broadcast about wifi display status to receivers that
- // have the required permission.
- getContext().sendBroadcast(intent,
- android.Manifest.permission.CONFIGURE_WIFI_DISPLAY);
+ // Send protected broadcast about wifi display status to registered receivers.
+ getContext().sendBroadcast(intent);
}
};
diff --git a/services/java/com/android/server/dreams/DreamController.java b/services/java/com/android/server/dreams/DreamController.java
index 81c80187..c01a45d 100644
--- a/services/java/com/android/server/dreams/DreamController.java
+++ b/services/java/com/android/server/dreams/DreamController.java
@@ -53,6 +53,8 @@ final class DreamController {
private final Intent mDreamingStoppedIntent = new Intent(Dream.ACTION_DREAMING_STOPPED)
.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ private final Intent mCloseNotificationShadeIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+
private DreamRecord mCurrentDream;
public DreamController(Context context, Handler handler, Listener listener) {
@@ -81,6 +83,9 @@ final class DreamController {
public void startDream(Binder token, ComponentName name, boolean isTest, int userId) {
stopDream();
+ // Close the notification shade
+ mContext.sendBroadcast(mCloseNotificationShadeIntent);
+
Slog.i(TAG, "Starting dream: name=" + name + ", isTest=" + isTest + ", userId=" + userId);
mCurrentDream = new DreamRecord(token, name, isTest, userId);
diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/java/com/android/server/input/InputManagerService.java
index 0b4a721..7b0c452 100644
--- a/services/java/com/android/server/input/InputManagerService.java
+++ b/services/java/com/android/server/input/InputManagerService.java
@@ -1238,11 +1238,15 @@ public class InputManagerService extends IInputManager.Stub
}
// Native callback.
- private void notifySwitch(long whenNanos, int switchCode, int switchValue) {
- switch (switchCode) {
- case SW_LID:
- mWindowManagerCallbacks.notifyLidSwitchChanged(whenNanos, switchValue == 0);
- break;
+ private void notifySwitch(long whenNanos, int switchValues, int switchMask) {
+ if (DEBUG) {
+ Slog.d(TAG, "notifySwitch: values=" + Integer.toHexString(switchValues)
+ + ", mask=" + Integer.toHexString(switchMask));
+ }
+
+ if ((switchMask & (1 << SW_LID)) != 0) {
+ final boolean lidOpen = ((switchValues & (1 << SW_LID)) == 0);
+ mWindowManagerCallbacks.notifyLidSwitchChanged(whenNanos, lidOpen);
}
}
diff --git a/services/java/com/android/server/location/LocationBlacklist.java b/services/java/com/android/server/location/LocationBlacklist.java
index 71fa9f9..6ad1a92 100644
--- a/services/java/com/android/server/location/LocationBlacklist.java
+++ b/services/java/com/android/server/location/LocationBlacklist.java
@@ -78,6 +78,7 @@ public final class LocationBlacklist extends ContentObserver {
* (package name matches blacklist, and does not match whitelist)
*/
public boolean isBlacklisted(String packageName) {
+ /*
synchronized (mLock) {
for (String black : mBlacklist) {
if (packageName.startsWith(black)) {
@@ -91,6 +92,7 @@ public final class LocationBlacklist extends ContentObserver {
}
}
}
+ */
return false;
}
diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java
index f2748a3..0efdead 100644
--- a/services/java/com/android/server/net/NetworkStatsService.java
+++ b/services/java/com/android/server/net/NetworkStatsService.java
@@ -104,7 +104,7 @@ import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
-import android.provider.Settings.Secure;
+import android.provider.Settings.Global;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.EventLog;
@@ -696,7 +696,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
/**
* Update {@link NetworkStatsRecorder} and {@link #mGlobalAlertBytes} to
* reflect current {@link #mPersistThreshold} value. Always defers to
- * {@link Secure} values when defined.
+ * {@link Global} values when defined.
*/
private void updatePersistThresholds() {
mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold));
@@ -1263,7 +1263,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
/**
* Default external settings that read from
- * {@link android.provider.Settings.Secure}.
+ * {@link android.provider.Settings.Global}.
*/
private static class DefaultNetworkStatsSettings implements NetworkStatsSettings {
private final ContentResolver mResolver;
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index cf22f53..1eafd9c 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -10019,16 +10019,16 @@ public class PackageManagerService extends IPackageManager.Stub {
}
if (loc == PackageHelper.APP_INSTALL_AUTO || loc == PackageHelper.APP_INSTALL_INTERNAL
|| loc == PackageHelper.APP_INSTALL_EXTERNAL) {
- android.provider.Settings.System.putInt(mContext.getContentResolver(),
- android.provider.Settings.Secure.DEFAULT_INSTALL_LOCATION, loc);
+ android.provider.Settings.Global.putInt(mContext.getContentResolver(),
+ android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, loc);
return true;
}
return false;
}
public int getInstallLocation() {
- return android.provider.Settings.System.getInt(mContext.getContentResolver(),
- android.provider.Settings.Secure.DEFAULT_INSTALL_LOCATION,
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),
+ android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION,
PackageHelper.APP_INSTALL_AUTO);
}
@@ -10120,8 +10120,9 @@ public class PackageManagerService extends IPackageManager.Stub {
*/
private boolean isPermissionEnforcedDefault(String permission) {
if (READ_EXTERNAL_STORAGE.equals(permission)) {
- return Secure.getInt(mContext.getContentResolver(),
- Secure.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT, 0) != 0;
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),
+ android.provider.Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT, 0)
+ != 0;
} else {
return true;
}
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index efedbd8..23ce52e 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -74,7 +74,6 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.hardware.display.DisplayManager;
-import android.hardware.input.InputManager;
import android.os.Binder;
import android.os.Bundle;
import android.os.Debug;
@@ -2749,7 +2748,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- if (DEBUG_LAYOUT) Slog.v(TAG, "Relayout " + win + ": " + win.mAttrs);
+ if (DEBUG_LAYOUT) Slog.v(TAG, "Relayout " + win + ": viewVisibility=" + viewVisibility
+ + " " + requestedWidth + "x" + requestedHeight + " " + win.mAttrs);
win.mEnforceSizeCompat = (win.mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0;
@@ -4036,7 +4036,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
changed = mFocusedApp != newFocus;
mFocusedApp = newFocus;
- if (DEBUG_FOCUS) Slog.v(TAG, "Set focused app to: " + mFocusedApp);
+ if (DEBUG_FOCUS) Slog.v(TAG, "Set focused app to: " + mFocusedApp
+ + " moveFocusNow=" + moveFocusNow);
if (changed) {
mInputMonitor.setFocusedAppLw(newFocus);
}
@@ -8296,7 +8297,8 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_LAYOUT && !win.mLayoutAttached) {
Slog.v(TAG, "1ST PASS " + win
+ ": gone=" + gone + " mHaveFrame=" + win.mHaveFrame
- + " mLayoutAttached=" + win.mLayoutAttached);
+ + " mLayoutAttached=" + win.mLayoutAttached
+ + " screen changed=" + win.isConfigDiff(ActivityInfo.CONFIG_SCREEN_SIZE));
final AppWindowToken atoken = win.mAppToken;
if (gone) Slog.v(TAG, " GONE: mViewVisibility="
+ win.mViewVisibility + " mRelayoutCalled="
@@ -8318,6 +8320,7 @@ public class WindowManagerService extends IWindowManager.Stub
// windows, since that means "perform layout as normal,
// just don't display").
if (!gone || !win.mHaveFrame || win.mLayoutNeeded
+ || win.isConfigDiff(ActivityInfo.CONFIG_SCREEN_SIZE)
|| win.mAttrs.type == TYPE_UNIVERSE_BACKGROUND) {
if (!win.mLayoutAttached) {
if (initial) {
@@ -8753,10 +8756,7 @@ public class WindowManagerService extends IWindowManager.Stub
!w.mLastContentInsets.equals(w.mContentInsets);
w.mVisibleInsetsChanged |=
!w.mLastVisibleInsets.equals(w.mVisibleInsets);
- boolean configChanged =
- w.mConfiguration != mCurConfiguration
- && (w.mConfiguration == null
- || mCurConfiguration.diff(w.mConfiguration) != 0);
+ boolean configChanged = w.isConfigChanged();
if (DEBUG_CONFIGURATION && configChanged) {
Slog.v(TAG, "Win " + w + " config changed: "
+ mCurConfiguration);
@@ -9254,10 +9254,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_RESIZE || DEBUG_ORIENTATION) Slog.v(TAG,
"Reporting new frame to " + win + ": " + win.mCompatFrame);
int diff = 0;
- boolean configChanged =
- win.mConfiguration != mCurConfiguration
- && (win.mConfiguration == null
- || (diff=mCurConfiguration.diff(win.mConfiguration)) != 0);
+ boolean configChanged = win.isConfigChanged();
if ((DEBUG_RESIZE || DEBUG_ORIENTATION || DEBUG_CONFIGURATION)
&& configChanged) {
Slog.i(TAG, "Sending new config to window " + win + ": "
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index ac958b8..9963d14 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -574,6 +574,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mAttrs;
}
+ @Override
public boolean getNeedsMenuLw(WindowManagerPolicy.WindowState bottom) {
int index = -1;
WindowState ws = this;
@@ -612,6 +613,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mLayer;
}
+ @Override
public IApplicationToken getAppToken() {
return mAppToken != null ? mAppToken.appToken : null;
}
@@ -801,12 +803,13 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mWinAnimator.mAnimation != null;
}
+ @Override
public boolean isGoneForLayoutLw() {
final AppWindowToken atoken = mAppToken;
return mViewVisibility == View.GONE
|| !mRelayoutCalled
|| (atoken == null && mRootToken.hidden)
- || (atoken != null && atoken.hiddenRequested)
+ || (atoken != null && (atoken.hiddenRequested || atoken.hidden))
|| mAttachedHidden
|| mExiting || mDestroying;
}
@@ -849,6 +852,18 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mFrame.right >= screenWidth && mFrame.bottom >= screenHeight;
}
+ boolean isConfigChanged() {
+ return mConfiguration != mService.mCurConfiguration
+ && (mConfiguration == null
+ || (mConfiguration.diff(mService.mCurConfiguration) != 0));
+ }
+
+ boolean isConfigDiff(int mask) {
+ return mConfiguration != mService.mCurConfiguration
+ && mConfiguration != null
+ && (mConfiguration.diff(mService.mCurConfiguration) & mask) != 0;
+ }
+
void removeLocked() {
disposeInputChannel();
diff --git a/services/jni/com_android_server_input_InputManagerService.cpp b/services/jni/com_android_server_input_InputManagerService.cpp
index 319cacd..a97becf 100644
--- a/services/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/jni/com_android_server_input_InputManagerService.cpp
@@ -187,7 +187,7 @@ public:
/* --- InputDispatcherPolicyInterface implementation --- */
- virtual void notifySwitch(nsecs_t when, int32_t switchCode, int32_t switchValue,
+ virtual void notifySwitch(nsecs_t when, uint32_t switchValues, uint32_t switchMask,
uint32_t policyFlags);
virtual void notifyConfigurationChanged(nsecs_t when);
virtual nsecs_t notifyANR(const sp<InputApplicationHandle>& inputApplicationHandle,
@@ -527,17 +527,17 @@ String8 NativeInputManager::getDeviceAlias(const InputDeviceIdentifier& identifi
return result;
}
-void NativeInputManager::notifySwitch(nsecs_t when, int32_t switchCode,
- int32_t switchValue, uint32_t policyFlags) {
+void NativeInputManager::notifySwitch(nsecs_t when,
+ uint32_t switchValues, uint32_t switchMask, uint32_t policyFlags) {
#if DEBUG_INPUT_DISPATCHER_POLICY
- ALOGD("notifySwitch - when=%lld, switchCode=%d, switchValue=%d, policyFlags=0x%x",
- when, switchCode, switchValue, policyFlags);
+ ALOGD("notifySwitch - when=%lld, switchValues=0x%08x, switchMask=0x%08x, policyFlags=0x%x",
+ when, switchValues, switchMask, policyFlags);
#endif
JNIEnv* env = jniEnv();
env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifySwitch,
- when, switchCode, switchValue);
+ when, switchValues, switchMask);
checkAndClearExceptionFromCallback(env, "notifySwitch");
}
diff --git a/services/tests/servicestests/src/com/android/server/DropBoxTest.java b/services/tests/servicestests/src/com/android/server/DropBoxTest.java
index f3baff4..6ce0a48 100644
--- a/services/tests/servicestests/src/com/android/server/DropBoxTest.java
+++ b/services/tests/servicestests/src/com/android/server/DropBoxTest.java
@@ -45,10 +45,10 @@ import java.util.zip.GZIPOutputStream;
public class DropBoxTest extends AndroidTestCase {
public void tearDown() throws Exception {
ContentResolver cr = getContext().getContentResolver();
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_AGE_SECONDS, "");
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_MAX_FILES, "");
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_QUOTA_KB, "");
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_TAG_PREFIX + "DropBoxTest", "");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_AGE_SECONDS, "");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_MAX_FILES, "");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_QUOTA_KB, "");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_TAG_PREFIX + "DropBoxTest", "");
}
public void testAddText() throws Exception {
@@ -254,13 +254,13 @@ public class DropBoxTest extends AndroidTestCase {
assertTrue(dropbox.isTagEnabled("DropBoxTest"));
ContentResolver cr = getContext().getContentResolver();
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_TAG_PREFIX + "DropBoxTest",
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_TAG_PREFIX + "DropBoxTest",
"disabled");
dropbox.addText("DropBoxTest", "TEST-DISABLED");
assertFalse(dropbox.isTagEnabled("DropBoxTest"));
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_TAG_PREFIX + "DropBoxTest",
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_TAG_PREFIX + "DropBoxTest",
"");
dropbox.addText("DropBoxTest", "TEST-ENABLED-AGAIN");
@@ -330,7 +330,7 @@ public class DropBoxTest extends AndroidTestCase {
// Limit storage to 10 blocks
int kb = blockSize * 10 / 1024;
ContentResolver cr = getContext().getContentResolver();
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_QUOTA_KB, Integer.toString(kb));
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_QUOTA_KB, Integer.toString(kb));
// Three tags using a total of 12 blocks:
// DropBoxTest0 [ ][ ]
@@ -432,8 +432,8 @@ public class DropBoxTest extends AndroidTestCase {
// Limit storage to 10 blocks with an expiration of 1 second
int kb = blockSize * 10 / 1024;
ContentResolver cr = getContext().getContentResolver();
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_AGE_SECONDS, "1");
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_QUOTA_KB, Integer.toString(kb));
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_AGE_SECONDS, "1");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_QUOTA_KB, Integer.toString(kb));
// Write one normal entry and another so big that it is instantly tombstoned
long before = System.currentTimeMillis();
@@ -497,7 +497,7 @@ public class DropBoxTest extends AndroidTestCase {
// Limit to 3 files and add one more entry
ContentResolver cr = getContext().getContentResolver();
- Settings.Secure.putString(cr, Settings.Secure.DROPBOX_MAX_FILES, "3");
+ Settings.Global.putString(cr, Settings.Global.DROPBOX_MAX_FILES, "3");
dropbox.addText("DropBoxTest", "TEST6");
// Verify only 3 files left
diff --git a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
index afa0eec..569acee 100644
--- a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
@@ -242,9 +242,9 @@ public class ThrottleServiceTest extends AndroidTestCase {
*/
public void setThrottlePolicy(long thresholdBytes, int valueKbitps, int resetDay) {
final ContentResolver resolver = getContext().getContentResolver();
- Settings.Secure.putLong(resolver, Settings.Secure.THROTTLE_THRESHOLD_BYTES, thresholdBytes);
- Settings.Secure.putInt(resolver, Settings.Secure.THROTTLE_VALUE_KBITSPS, valueKbitps);
- Settings.Secure.putInt(resolver, Settings.Secure.THROTTLE_RESET_DAY, resetDay);
+ Settings.Global.putLong(resolver, Settings.Global.THROTTLE_THRESHOLD_BYTES, thresholdBytes);
+ Settings.Global.putInt(resolver, Settings.Global.THROTTLE_VALUE_KBITSPS, valueKbitps);
+ Settings.Global.putInt(resolver, Settings.Global.THROTTLE_RESET_DAY, resetDay);
}
/**
@@ -252,9 +252,9 @@ public class ThrottleServiceTest extends AndroidTestCase {
*/
public void clearThrottlePolicy() {
final ContentResolver resolver = getContext().getContentResolver();
- Settings.Secure.putString(resolver, Settings.Secure.THROTTLE_THRESHOLD_BYTES, null);
- Settings.Secure.putString(resolver, Settings.Secure.THROTTLE_VALUE_KBITSPS, null);
- Settings.Secure.putString(resolver, Settings.Secure.THROTTLE_RESET_DAY, null);
+ Settings.Global.putString(resolver, Settings.Global.THROTTLE_THRESHOLD_BYTES, null);
+ Settings.Global.putString(resolver, Settings.Global.THROTTLE_VALUE_KBITSPS, null);
+ Settings.Global.putString(resolver, Settings.Global.THROTTLE_RESET_DAY, null);
}
/**
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 3b6e107..50f98b8 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -284,25 +284,39 @@ public class StatusBarTest extends TestActivity
}, 3000);
}
},
- new Test("Expand") {
+ new Test("Expand notifications") {
public void run() {
- mStatusBarManager.expandNotifications();
+ mStatusBarManager.expandNotificationsPanel();
}
},
- new Test("Expand in 3 sec.") {
+ new Test(" ... in 3 sec.") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- mStatusBarManager.expandNotifications();
+ mStatusBarManager.expandNotificationsPanel();
}
}, 3000);
}
},
- new Test("Collapse in 3 sec.") {
+ new Test("Expand settings") {
+ public void run() {
+ mStatusBarManager.expandSettingsPanel();
+ }
+ },
+ new Test(" ... in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.expandSettingsPanel();
+ }
+ }, 3000);
+ }
+ },
+ new Test("Collapse panels in 3 sec.") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- mStatusBarManager.collapseNotifications();
+ mStatusBarManager.collapsePanels();
}
}, 3000);
}
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index e7927ae..ab9db88 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -608,8 +608,8 @@ public class WifiStateMachine extends StateMachine {
mPrimaryDeviceType = mContext.getResources().getString(
R.string.config_wifi_p2p_device_type);
- mUserWantsSuspendOpt.set(Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
+ mUserWantsSuspendOpt.set(Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
mContext.registerReceiver(
new BroadcastReceiver() {
@@ -659,13 +659,13 @@ public class WifiStateMachine extends StateMachine {
},
new IntentFilter(ACTION_DELAYED_DRIVER_STOP));
- mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED), false,
+ mContext.getContentResolver().registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED), false,
new ContentObserver(getHandler()) {
@Override
public void onChange(boolean selfChange) {
- mUserWantsSuspendOpt.set(Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
+ mUserWantsSuspendOpt.set(Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
}
});
@@ -1074,8 +1074,8 @@ public class WifiStateMachine extends StateMachine {
*/
public void setFrequencyBand(int band, boolean persist) {
if (persist) {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.WIFI_FREQUENCY_BAND,
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_FREQUENCY_BAND,
band);
}
sendMessage(obtainMessage(CMD_SET_FREQUENCY_BAND, band, 0));
@@ -1331,8 +1331,8 @@ public class WifiStateMachine extends StateMachine {
* Set the frequency band from the system setting value, if any.
*/
private void setFrequencyBand() {
- int band = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.WIFI_FREQUENCY_BAND, WifiManager.WIFI_FREQUENCY_BAND_AUTO);
+ int band = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_FREQUENCY_BAND, WifiManager.WIFI_FREQUENCY_BAND_AUTO);
setFrequencyBand(band, false);
}
diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
index 7fa6aac..4440145 100644
--- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
@@ -343,13 +343,13 @@ public class WifiWatchdogStateMachine extends StateMachine {
// Watchdog is always enabled. Poor network detection can be seperately turned on/off
// TODO: Remove this setting & clean up state machine since we always have
// watchdog in an enabled state
- putSettingsBoolean(contentResolver, Settings.Secure.WIFI_WATCHDOG_ON, true);
+ putSettingsGlobalBoolean(contentResolver, Settings.Global.WIFI_WATCHDOG_ON, true);
// disable poor network avoidance
if (sWifiOnly) {
logd("Disabling poor network avoidance for wi-fi only device");
- putSettingsBoolean(contentResolver,
- Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, false);
+ putSettingsGlobalBoolean(contentResolver,
+ Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, false);
}
WifiWatchdogStateMachine wwsm = new WifiWatchdogStateMachine(context);
@@ -402,7 +402,7 @@ public class WifiWatchdogStateMachine extends StateMachine {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_ON),
+ Settings.Global.getUriFor(Settings.Global.WIFI_WATCHDOG_ON),
false, contentObserver);
}
@@ -418,7 +418,7 @@ public class WifiWatchdogStateMachine extends StateMachine {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED),
+ Settings.Global.getUriFor(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED),
false, contentObserver);
}
@@ -432,7 +432,8 @@ public class WifiWatchdogStateMachine extends StateMachine {
}
private boolean isWatchdogEnabled() {
- boolean ret = getSettingsBoolean(mContentResolver, Settings.Secure.WIFI_WATCHDOG_ON, true);
+ boolean ret = getSettingsGlobalBoolean(
+ mContentResolver, Settings.Global.WIFI_WATCHDOG_ON, true);
if (DBG) logd("Watchdog enabled " + ret);
return ret;
}
@@ -440,8 +441,8 @@ public class WifiWatchdogStateMachine extends StateMachine {
private void updateSettings() {
if (DBG) logd("Updating secure settings");
- mPoorNetworkDetectionEnabled = getSettingsBoolean(mContentResolver,
- Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, true);
+ mPoorNetworkDetectionEnabled = getSettingsGlobalBoolean(mContentResolver,
+ Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, true);
}
/**
@@ -927,21 +928,6 @@ public class WifiWatchdogStateMachine extends StateMachine {
}
/**
- * Convenience function for retrieving a single secure settings value
- * as a string with a default value.
- *
- * @param cr The ContentResolver to access.
- * @param name The name of the setting to retrieve.
- * @param def Value to return if the setting is not defined.
- *
- * @return The setting's current value, or 'def' if it is not defined
- */
- private static String getSettingsStr(ContentResolver cr, String name, String def) {
- String v = Settings.Secure.getString(cr, name);
- return v != null ? v : def;
- }
-
- /**
* Convenience function for retrieving a single secure settings value as a
* boolean. Note that internally setting values are always stored as
* strings; this function converts the string to a boolean for you. The
@@ -954,8 +940,8 @@ public class WifiWatchdogStateMachine extends StateMachine {
* @return The setting's current value, or 'def' if it is not defined or not
* a valid boolean.
*/
- private static boolean getSettingsBoolean(ContentResolver cr, String name, boolean def) {
- return Settings.Secure.getInt(cr, name, def ? 1 : 0) == 1;
+ private static boolean getSettingsGlobalBoolean(ContentResolver cr, String name, boolean def) {
+ return Settings.Global.getInt(cr, name, def ? 1 : 0) == 1;
}
/**
@@ -970,8 +956,8 @@ public class WifiWatchdogStateMachine extends StateMachine {
* @param value The new value for the setting.
* @return true if the value was set, false on database errors
*/
- private static boolean putSettingsBoolean(ContentResolver cr, String name, boolean value) {
- return Settings.Secure.putInt(cr, name, value ? 1 : 0);
+ private static boolean putSettingsGlobalBoolean(ContentResolver cr, String name, boolean value) {
+ return Settings.Global.putInt(cr, name, value ? 1 : 0);
}
private static void logd(String s) {
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
index 8f0d8f0..2e6aa88 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
@@ -123,6 +123,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
private static final Boolean TRY_REINVOCATION = true;;
private static final Boolean NO_REINVOCATION = false;
+ private static final Boolean RELOAD = true;
+ private static final Boolean NO_RELOAD = false;
+
private static final int CONNECT_FAILURE = -1;
private static final int CONNECT_SUCCESS = 0;
private static final int NEEDS_PROVISION_REQ = 1;
@@ -135,7 +138,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
private static final int DISCOVER_TIMEOUT_S = 120;
/* Idle time after a peer is gone when the group is torn down */
- private static final int GROUP_IDLE_TIME_S = 20;
+ private static final int GROUP_IDLE_TIME_S = 10;
private static final int BASE = Protocol.BASE_WIFI_P2P_SERVICE;
@@ -1222,7 +1225,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
/*
* update cache information and set network id to mGroup.
*/
- updatePersistentNetworks();
+ updatePersistentNetworks(NO_RELOAD);
String devAddr = mGroup.getOwner().deviceAddress;
mGroup.setNetworkId(mGroups.getNetworkId(devAddr,
mGroup.getNetworkName()));
@@ -1269,11 +1272,14 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
if (DBG) logd("Remove unknown client from the list");
removeClientFromList(netId, mSavedPeerConfig.deviceAddress, true);
}
- }
- // invocation is failed or deferred. Try another way to connect.
- mSavedPeerConfig.netId = WifiP2pGroup.PERSISTENT_NET_ID;
- if (connect(mSavedPeerConfig, NO_REINVOCATION) == CONNECT_FAILURE) {
+ // invocation is failed or deferred. Try another way to connect.
+ mSavedPeerConfig.netId = WifiP2pGroup.PERSISTENT_NET_ID;
+ if (connect(mSavedPeerConfig, NO_REINVOCATION) == CONNECT_FAILURE) {
+ handleGroupCreationFailure();
+ transitionTo(mInactiveState);
+ }
+ } else {
handleGroupCreationFailure();
transitionTo(mInactiveState);
}
@@ -1759,7 +1765,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
* Synchronize the persistent group list between
* wpa_supplicant and mGroups.
*/
- private void updatePersistentNetworks() {
+ private void updatePersistentNetworks(boolean reload) {
String listStr = mWifiNative.listNetworks();
if (listStr == null) return;
@@ -1767,6 +1773,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
String[] lines = listStr.split("\n");
if (lines == null) return;
+ if (reload) mGroups.clear();
+
// Skip the first line, which is a header
for (int i = 1; i < lines.length; i++) {
String[] result = lines[i].split("\t");
@@ -1821,9 +1829,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
isSaveRequired = true;
}
- if (isSaveRequired) {
- sendP2pPersistentGroupsChangedBroadcast();
+ if (reload || isSaveRequired) {
mWifiNative.saveConfig();
+ sendP2pPersistentGroupsChangedBroadcast();
}
}
@@ -1900,7 +1908,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
return CONNECT_SUCCESS;
} else {
loge("p2pReinvoke() failed, update networks");
- updatePersistentNetworks();
+ updatePersistentNetworks(RELOAD);
// continue with negotiation
}
}
@@ -2039,8 +2047,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
}
private String getPersistedDeviceName() {
- String deviceName = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.WIFI_P2P_DEVICE_NAME);
+ String deviceName = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.WIFI_P2P_DEVICE_NAME);
if (deviceName == null) {
/* We use the 4 digits of the ANDROID_ID to have a friendly
* default that has low likelihood of collision with a peer */
@@ -2062,8 +2070,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
mThisDevice.deviceName = devName;
mWifiNative.setP2pSsidPostfix("-" + mThisDevice.deviceName);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.WIFI_P2P_DEVICE_NAME, devName);
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.WIFI_P2P_DEVICE_NAME, devName);
sendThisDeviceChangedBroadcast();
return true;
}
@@ -2112,7 +2120,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
mServiceTransactionId = 0;
mServiceDiscReqId = null;
- updatePersistentNetworks();
+ updatePersistentNetworks(RELOAD);
}
private void updateThisDevice(int status) {