summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt6
-rw-r--r--core/java/android/accessibilityservice/AccessibilityService.java7
-rw-r--r--core/java/android/app/ActivityManagerNative.java6
-rw-r--r--core/java/android/app/ActivityThread.java7
-rw-r--r--core/java/android/app/ApplicationPackageManager.java15
-rw-r--r--core/java/android/app/ContextImpl.java17
-rw-r--r--core/java/android/app/DownloadManager.java8
-rw-r--r--core/java/android/app/FragmentManager.java2
-rw-r--r--core/java/android/app/IActivityManager.java2
-rw-r--r--core/java/android/app/Instrumentation.java18
-rw-r--r--core/java/android/app/StatusBarManager.java42
-rw-r--r--core/java/android/app/TaskStackBuilder.java21
-rw-r--r--core/java/android/content/Context.java30
-rw-r--r--core/java/android/content/ContextWrapper.java6
-rw-r--r--core/java/android/content/pm/PackageManager.java4
-rw-r--r--core/java/android/net/SSLCertificateSocketFactory.java40
-rw-r--r--core/java/android/net/http/AndroidHttpClient.java33
-rw-r--r--core/java/android/os/Environment.java22
-rw-r--r--core/java/android/os/storage/IMountService.java41
-rw-r--r--core/java/android/os/storage/StorageManager.java57
-rw-r--r--core/java/android/provider/Settings.java117
-rw-r--r--core/java/android/view/GLES20Canvas.java1
-rw-r--r--core/java/android/view/GLES20Layer.java5
-rw-r--r--core/java/android/view/GLES20TextureLayer.java2
-rw-r--r--core/java/android/view/HardwareLayer.java5
-rw-r--r--core/java/android/view/HardwareRenderer.java17
-rw-r--r--core/java/android/view/ScaleGestureDetector.java132
-rw-r--r--core/java/android/view/TextureView.java1
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--core/java/android/view/VolumePanel.java7
-rw-r--r--core/java/android/webkit/JniUtil.java4
-rw-r--r--core/java/android/webkit/WebSettings.java1
-rw-r--r--core/java/android/widget/AbsListView.java28
-rw-r--r--core/java/android/widget/ProgressBar.java14
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl6
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBarService.aidl6
-rw-r--r--core/java/com/android/internal/statusbar/StatusBarIcon.java14
-rw-r--r--core/jni/AndroidRuntime.cpp24
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp6
-rw-r--r--core/res/res/drawable/progress_horizontal_holo_dark.xml2
-rw-r--r--core/res/res/drawable/progress_horizontal_holo_light.xml2
-rw-r--r--core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml2
-rw-r--r--core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml2
-rw-r--r--core/res/res/values-af/strings.xml12
-rw-r--r--core/res/res/values-am/strings.xml20
-rw-r--r--core/res/res/values-ar/strings.xml18
-rw-r--r--core/res/res/values-be/strings.xml18
-rw-r--r--core/res/res/values-bg/strings.xml12
-rw-r--r--core/res/res/values-ca/strings.xml34
-rw-r--r--core/res/res/values-cs/strings.xml12
-rw-r--r--core/res/res/values-da/strings.xml18
-rw-r--r--core/res/res/values-de/strings.xml20
-rw-r--r--core/res/res/values-el/strings.xml18
-rw-r--r--core/res/res/values-en-rGB/strings.xml30
-rw-r--r--core/res/res/values-es-rUS/strings.xml20
-rw-r--r--core/res/res/values-es/strings.xml20
-rw-r--r--core/res/res/values-et/strings.xml30
-rw-r--r--core/res/res/values-fa/strings.xml18
-rw-r--r--core/res/res/values-fi/strings.xml18
-rw-r--r--core/res/res/values-fr/strings.xml18
-rw-r--r--core/res/res/values-hi/strings.xml18
-rw-r--r--core/res/res/values-hr/strings.xml18
-rw-r--r--core/res/res/values-hu/strings.xml18
-rw-r--r--core/res/res/values-in/strings.xml18
-rw-r--r--core/res/res/values-it/strings.xml18
-rw-r--r--core/res/res/values-iw/strings.xml18
-rw-r--r--core/res/res/values-ja/strings.xml12
-rw-r--r--core/res/res/values-ko/strings.xml18
-rw-r--r--core/res/res/values-lt/strings.xml18
-rw-r--r--core/res/res/values-lv/strings.xml18
-rw-r--r--core/res/res/values-ms/strings.xml81
-rw-r--r--core/res/res/values-nb/strings.xml20
-rw-r--r--core/res/res/values-nl/strings.xml18
-rw-r--r--core/res/res/values-pl/strings.xml20
-rw-r--r--core/res/res/values-pt-rPT/strings.xml18
-rw-r--r--core/res/res/values-pt/strings.xml12
-rw-r--r--core/res/res/values-ro/strings.xml12
-rw-r--r--core/res/res/values-ru/strings.xml44
-rw-r--r--core/res/res/values-sk/strings.xml14
-rw-r--r--core/res/res/values-sl/strings.xml28
-rw-r--r--core/res/res/values-sr/strings.xml18
-rw-r--r--core/res/res/values-sv/strings.xml18
-rw-r--r--core/res/res/values-sw/strings.xml18
-rw-r--r--core/res/res/values-th/strings.xml18
-rw-r--r--core/res/res/values-tl/strings.xml18
-rw-r--r--core/res/res/values-tr/strings.xml12
-rw-r--r--core/res/res/values-uk/strings.xml18
-rw-r--r--core/res/res/values-vi/strings.xml18
-rw-r--r--core/res/res/values-zh-rCN/strings.xml18
-rw-r--r--core/res/res/values-zh-rTW/strings.xml18
-rw-r--r--core/res/res/values-zu/strings.xml16
-rw-r--r--docs/html/about/versions/android-2.3.jd13
-rw-r--r--docs/html/guide/topics/resources/string-resource.jd24
-rw-r--r--docs/html/training/basics/activity-lifecycle/recreating.jd27
-rw-r--r--include/storage/IMountService.h7
-rw-r--r--libs/hwui/Caches.cpp26
-rw-r--r--libs/hwui/Layer.h26
-rw-r--r--libs/hwui/ResourceCache.cpp3
-rw-r--r--libs/storage/IMountService.cpp5
-rw-r--r--location/java/android/location/LocationManager.java30
-rw-r--r--media/java/android/media/AudioManager.java7
-rw-r--r--media/java/android/media/AudioService.java209
-rw-r--r--native/android/storage_manager.cpp15
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java3
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_off.pngbin1678 -> 1883 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_on.pngbin1688 -> 1888 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_clock_circle.pngbin0 -> 1606 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_clock_hour.pngbin0 -> 433 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_clock_minute.pngbin0 -> 486 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_off.pngbin1184 -> 1250 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_on.pngbin1187 -> 1259 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_clock_circle.pngbin0 -> 1136 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_clock_hour.pngbin0 -> 445 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_clock_minute.pngbin0 -> 447 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_off.pngbin2285 -> 2683 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_on.pngbin2299 -> 2682 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_circle.pngbin0 -> 2244 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_hour.pngbin0 -> 499 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_minute.pngbin0 -> 549 bytes
-rw-r--r--packages/SystemUI/res/drawable/qs_tile_background.xml4
-rw-r--r--packages/SystemUI/res/layout-land/status_bar_recent_panel.xml13
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_alarm.xml25
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_time.xml30
-rw-r--r--packages/SystemUI/res/layout/status_bar.xml70
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded.xml2
-rw-r--r--packages/SystemUI/res/values-af/strings.xml5
-rw-r--r--packages/SystemUI/res/values-am/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml5
-rw-r--r--packages/SystemUI/res/values-be/strings.xml5
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml15
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml5
-rw-r--r--packages/SystemUI/res/values-da/strings.xml5
-rw-r--r--packages/SystemUI/res/values-de/strings.xml9
-rw-r--r--packages/SystemUI/res/values-el/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml11
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml5
-rw-r--r--packages/SystemUI/res/values-es/strings.xml5
-rw-r--r--packages/SystemUI/res/values-et/strings.xml7
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml5
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml5
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml5
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml5
-rw-r--r--packages/SystemUI/res/values-in/strings.xml5
-rw-r--r--packages/SystemUI/res/values-it/strings.xml5
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml5
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml5
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml20
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml5
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml7
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml5
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml7
-rw-r--r--packages/SystemUI/res/values-rm/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sw600dp/dimens.xml4
-rw-r--r--packages/SystemUI/res/values-sw720dp/dimens.xml4
-rw-r--r--packages/SystemUI/res/values-th/strings.xml5
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml5
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml5
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml5
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml5
-rw-r--r--packages/SystemUI/res/values/dimens.xml14
-rw-r--r--packages/SystemUI/res/values/strings.xml12
-rw-r--r--packages/SystemUI/res/values/styles.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/SearchPanelView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java181
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java31
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java58
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java2
-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.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java4
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java7
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java8
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java14
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardUpdateMonitor.java14
-rw-r--r--services/java/com/android/server/AppWidgetServiceImpl.java6
-rw-r--r--services/java/com/android/server/BackupManagerService.java8
-rwxr-xr-xservices/java/com/android/server/BluetoothManagerService.java10
-rw-r--r--services/java/com/android/server/ConnectivityService.java18
-rw-r--r--services/java/com/android/server/DockObserver.java18
-rw-r--r--services/java/com/android/server/MountService.java252
-rw-r--r--services/java/com/android/server/NetworkTimeUpdateService.java6
-rwxr-xr-xservices/java/com/android/server/NotificationManagerService.java4
-rw-r--r--services/java/com/android/server/RecognitionManagerService.java108
-rw-r--r--services/java/com/android/server/SamplingProfilerService.java6
-rw-r--r--services/java/com/android/server/StatusBarManagerService.java37
-rwxr-xr-xservices/java/com/android/server/VibratorService.java17
-rw-r--r--services/java/com/android/server/WifiService.java10
-rw-r--r--services/java/com/android/server/accessibility/AccessibilityManagerService.java113
-rw-r--r--services/java/com/android/server/accessibility/ScreenMagnifier.java18
-rw-r--r--services/java/com/android/server/accessibility/TouchExplorer.java16
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java17
-rw-r--r--services/java/com/android/server/connectivity/Tethering.java4
-rw-r--r--services/java/com/android/server/display/OverlayDisplayAdapter.java42
-rw-r--r--services/java/com/android/server/input/InputManagerService.java20
-rwxr-xr-xservices/java/com/android/server/location/GpsLocationProvider.java8
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java4
-rw-r--r--services/java/com/android/server/power/PowerManagerService.java72
-rw-r--r--services/java/com/android/server/usb/UsbDeviceManager.java8
-rwxr-xr-xservices/java/com/android/server/wm/WindowManagerService.java4
-rw-r--r--services/java/com/android/server/wm/WindowStateAnimator.java8
-rw-r--r--services/jni/com_android_server_power_PowerManagerService.cpp12
-rw-r--r--services/tests/servicestests/res/raw/test1.obb (renamed from core/tests/coretests/res/raw/test1.obb)bin37440 -> 37444 bytes
-rw-r--r--services/tests/servicestests/res/raw/test1_nosig.obb (renamed from core/tests/coretests/res/raw/test1_nosig.obb)bin37376 -> 37376 bytes
-rw-r--r--services/tests/servicestests/res/raw/test1_wrongpackage.obb (renamed from core/tests/coretests/res/raw/test1_wrongpackage.obb)bin37431 -> 37431 bytes
-rw-r--r--services/tests/servicestests/src/com/android/server/MountServiceTests.java (renamed from core/tests/coretests/src/com/android/server/MountServiceTests.java)36
-rw-r--r--test-runner/src/android/test/mock/MockPackageManager.java7
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java4
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs18
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs50
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs20
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java20
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java3
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java12
243 files changed, 2462 insertions, 1817 deletions
diff --git a/api/current.txt b/api/current.txt
index 2cbf02d8f693..c732c3ea1df9 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -2066,6 +2066,7 @@ package android.accessibilityservice {
field public static final int GLOBAL_ACTION_BACK = 1; // 0x1
field public static final int GLOBAL_ACTION_HOME = 2; // 0x2
field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4
+ field public static final int GLOBAL_ACTION_QUICK_SETTINGS = 5; // 0x5
field public static final int GLOBAL_ACTION_RECENTS = 3; // 0x3
field public static final java.lang.String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
field public static final java.lang.String SERVICE_META_DATA = "android.accessibilityservice";
@@ -12744,12 +12745,14 @@ package android.net {
method public static javax.net.ssl.SSLSocketFactory getDefault(int, android.net.SSLSessionCache);
method public java.lang.String[] getDefaultCipherSuites();
method public static org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
+ method public static org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, int, android.net.SSLSessionCache);
method public static javax.net.ssl.SSLSocketFactory getInsecure(int, android.net.SSLSessionCache);
method public byte[] getNpnSelectedProtocol(java.net.Socket);
method public java.lang.String[] getSupportedCipherSuites();
method public void setHostname(java.net.Socket, java.lang.String);
method public void setKeyManagers(javax.net.ssl.KeyManager[]);
method public void setNpnProtocols(byte[][]);
+ method public void setSoWriteTimeout(java.net.Socket, int) throws java.net.SocketException;
method public void setTrustManagers(javax.net.ssl.TrustManager[]);
method public void setUseSessionTickets(java.net.Socket, boolean);
}
@@ -18904,7 +18907,7 @@ package android.provider {
field public static final deprecated java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
field public static final deprecated java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
field public static final deprecated java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
- field public static final java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+ field public static final deprecated java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
field public static final deprecated java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
@@ -27268,7 +27271,6 @@ package android.webkit {
method public void setSupportZoom(boolean);
method public deprecated synchronized void setTextSize(android.webkit.WebSettings.TextSize);
method public synchronized void setTextZoom(int);
- method public deprecated void setUseWebViewBackgroundForOverscrollBackground(boolean);
method public synchronized void setUseWideViewPort(boolean);
method public synchronized void setUserAgentString(java.lang.String);
method public synchronized boolean supportMultipleWindows();
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 81ee1920e4a8..b0bad0721218 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -323,7 +323,7 @@ public abstract class AccessibilityService extends Service {
public static final int GLOBAL_ACTION_HOME = 2;
/**
- * Action to open the recents.
+ * Action to open the recent apps.
*/
public static final int GLOBAL_ACTION_RECENTS = 3;
@@ -332,6 +332,11 @@ public abstract class AccessibilityService extends Service {
*/
public static final int GLOBAL_ACTION_NOTIFICATIONS = 4;
+ /**
+ * Action to open the quick settings.
+ */
+ public static final int GLOBAL_ACTION_QUICK_SETTINGS = 5;
+
private static final String LOG_TAG = "AccessibilityService";
interface Callbacks {
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index c3f57e8aac72..9b08493f0379 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1530,8 +1530,9 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
IBinder resultTo = data.readStrongBinder();
Bundle options = data.readInt() != 0
? Bundle.CREATOR.createFromParcel(data) : null;
+ int userId = data.readInt();
int result = startActivities(app, intents, resolvedTypes, resultTo,
- options);
+ options, userId);
reply.writeNoException();
reply.writeInt(result);
return true;
@@ -3708,7 +3709,7 @@ class ActivityManagerProxy implements IActivityManager
public int startActivities(IApplicationThread caller,
Intent[] intents, String[] resolvedTypes, IBinder resultTo,
- Bundle options) throws RemoteException {
+ Bundle options, int userId) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
@@ -3722,6 +3723,7 @@ class ActivityManagerProxy implements IActivityManager
} else {
data.writeInt(0);
}
+ data.writeInt(userId);
mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0);
reply.readException();
int result = reply.readInt();
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index e613e042a847..d4b204f8528e 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1740,6 +1740,11 @@ public final class ActivityThread {
public final LoadedApk getPackageInfo(String packageName, CompatibilityInfo compatInfo,
int flags) {
+ return getPackageInfo(packageName, compatInfo, flags, UserHandle.myUserId());
+ }
+
+ public final LoadedApk getPackageInfo(String packageName, CompatibilityInfo compatInfo,
+ int flags, int userId) {
synchronized (mPackages) {
WeakReference<LoadedApk> ref;
if ((flags&Context.CONTEXT_INCLUDE_CODE) != 0) {
@@ -1768,7 +1773,7 @@ public final class ActivityThread {
ApplicationInfo ai = null;
try {
ai = getPackageManager().getApplicationInfo(packageName,
- PackageManager.GET_SHARED_LIBRARY_FILES, UserHandle.myUserId());
+ PackageManager.GET_SHARED_LIBRARY_FILES, userId);
} catch (RemoteException e) {
// Ignore
}
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 18503f613afc..e77fe6eb07eb 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -759,6 +759,21 @@ final class ApplicationPackageManager extends PackageManager {
getApplicationInfo(appPackageName, 0));
}
+ /** @hide */
+ @Override
+ public Resources getResourcesForApplicationAsUser(String appPackageName, int userId)
+ throws NameNotFoundException {
+ try {
+ ApplicationInfo ai = mPM.getApplicationInfo(appPackageName, 0, userId);
+ if (ai != null) {
+ return getResourcesForApplication(ai);
+ }
+ } catch (RemoteException e) {
+ throw new RuntimeException("Package manager has died", e);
+ }
+ throw new NameNotFoundException("Package " + appPackageName + " doesn't exist");
+ }
+
int mCachedSafeMode = -1;
@Override public boolean isSafeMode() {
try {
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index a6ec9b67e0bc..45bb305b3e69 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -965,6 +965,20 @@ class ContextImpl extends Context {
startActivities(intents, null);
}
+ /** @hide */
+ @Override
+ public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
+ if ((intents[0].getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0) {
+ throw new AndroidRuntimeException(
+ "Calling startActivities() from outside of an Activity "
+ + " context requires the FLAG_ACTIVITY_NEW_TASK flag on first Intent."
+ + " Is this really what you want?");
+ }
+ mMainThread.getInstrumentation().execStartActivitiesAsUser(
+ getOuterContext(), mMainThread.getApplicationThread(), null,
+ (Activity)null, intents, options, userHandle.getIdentifier());
+ }
+
@Override
public void startActivities(Intent[] intents, Bundle options) {
if ((intents[0].getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0) {
@@ -1693,7 +1707,8 @@ class ContextImpl extends Context {
}
LoadedApk pi =
- mMainThread.getPackageInfo(packageName, mResources.getCompatibilityInfo(), flags);
+ mMainThread.getPackageInfo(packageName, mResources.getCompatibilityInfo(), flags,
+ user.getIdentifier());
if (pi != null) {
ContextImpl c = new ContextImpl();
c.mRestricted = (flags & CONTEXT_RESTRICTED) == CONTEXT_RESTRICTED;
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 0b1c5240b3b6..6cf4dd0163df 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -1098,8 +1098,8 @@ public class DownloadManager {
*/
public static Long getMaxBytesOverMobile(Context context) {
try {
- return Settings.Secure.getLong(context.getContentResolver(),
- Settings.Secure.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
+ return Settings.Global.getLong(context.getContentResolver(),
+ Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
} catch (SettingNotFoundException exc) {
return null;
}
@@ -1116,8 +1116,8 @@ public class DownloadManager {
*/
public static Long getRecommendedMaxBytesOverMobile(Context context) {
try {
- return Settings.Secure.getLong(context.getContentResolver(),
- Settings.Secure.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
+ return Settings.Global.getLong(context.getContentResolver(),
+ Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
} catch (SettingNotFoundException exc) {
return null;
}
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 7f11437bf791..aad5487927fb 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -776,7 +776,7 @@ final class FragmentManagerImpl extends FragmentManager {
// + " mRemoving=" + f.mRemoving + " Callers=" + Debug.getCallers(5));
// Fragments that are not currently added will sit in the onCreate() state.
- if (!f.mAdded && newState > Fragment.CREATED) {
+ if ((!f.mAdded || f.mDetached) && newState > Fragment.CREATED) {
newState = Fragment.CREATED;
}
if (f.mRemoving && newState > f.mState) {
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 2b2679e4f1fa..9454636ee76b 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -311,7 +311,7 @@ public interface IActivityManager extends IInterface {
public int startActivities(IApplicationThread caller,
Intent[] intents, String[] resolvedTypes, IBinder resultTo,
- Bundle options) throws RemoteException;
+ Bundle options, int userId) throws RemoteException;
public int getFrontActivityScreenCompatMode() throws RemoteException;
public void setFrontActivityScreenCompatMode(int mode) throws RemoteException;
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index ee4e964298b4..e0856aeaee03 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -1430,6 +1430,21 @@ public class Instrumentation {
*/
public void execStartActivities(Context who, IBinder contextThread,
IBinder token, Activity target, Intent[] intents, Bundle options) {
+ execStartActivitiesAsUser(who, contextThread, token, target, intents, options,
+ UserHandle.myUserId());
+ }
+
+ /**
+ * Like {@link #execStartActivity(Context, IBinder, IBinder, Activity, Intent, int)},
+ * but accepts an array of activities to be started. Note that active
+ * {@link ActivityMonitor} objects only match against the first activity in
+ * the array.
+ *
+ * {@hide}
+ */
+ public void execStartActivitiesAsUser(Context who, IBinder contextThread,
+ IBinder token, Activity target, Intent[] intents, Bundle options,
+ int userId) {
IApplicationThread whoThread = (IApplicationThread) contextThread;
if (mActivityMonitors != null) {
synchronized (mSync) {
@@ -1453,7 +1468,8 @@ public class Instrumentation {
resolvedTypes[i] = intents[i].resolveTypeIfNeeded(who.getContentResolver());
}
int result = ActivityManagerNative.getDefault()
- .startActivities(whoThread, intents, resolvedTypes, token, options);
+ .startActivities(whoThread, intents, resolvedTypes, token, options,
+ userId);
checkStartActivityResult(result, intents[0]);
} catch (RemoteException e) {
}
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index dd9f3376d74e..1e61e106d75c 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -97,13 +97,13 @@ public class StatusBarManager {
}
/**
- * Expand the status bar.
+ * Expand the notifications.
*/
- public void expand() {
+ public void expandNotifications() {
try {
final IStatusBarService svc = getService();
if (svc != null) {
- svc.expand();
+ svc.expandNotifications();
}
} catch (RemoteException ex) {
// system process is dead anyway.
@@ -112,13 +112,43 @@ public class StatusBarManager {
}
/**
- * Collapse the status bar.
+ * Collapse the notifications.
*/
- public void collapse() {
+ public void collapseNotifications() {
try {
final IStatusBarService svc = getService();
if (svc != null) {
- svc.collapse();
+ svc.collapseNotifications();
+ }
+ } catch (RemoteException ex) {
+ // system process is dead anyway.
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Expand the quick settings.
+ */
+ public void expandQuickSettings() {
+ 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();
}
} catch (RemoteException ex) {
// system process is dead anyway.
diff --git a/core/java/android/app/TaskStackBuilder.java b/core/java/android/app/TaskStackBuilder.java
index 83f7abf7871f..9d5bcc6b7ac7 100644
--- a/core/java/android/app/TaskStackBuilder.java
+++ b/core/java/android/app/TaskStackBuilder.java
@@ -23,6 +23,7 @@ import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
+import android.os.UserHandle;
import android.util.Log;
import java.util.ArrayList;
@@ -209,18 +210,26 @@ public class TaskStackBuilder {
/**
* Start the task stack constructed by this builder.
- *
- * @param options Additional options for how the Activity should be started.
- * See {@link android.content.Context#startActivity(Intent, Bundle)
- * Context.startActivity(Intent, Bundle)} for more details.
+ * @hide
*/
- public void startActivities(Bundle options) {
+ public void startActivities(Bundle options, UserHandle userHandle) {
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot startActivities");
}
- mSourceContext.startActivities(getIntents(), options);
+ mSourceContext.startActivitiesAsUser(getIntents(), options, userHandle);
+ }
+
+ /**
+ * Start the task stack constructed by this builder.
+ *
+ * @param options Additional options for how the Activity should be started.
+ * See {@link android.content.Context#startActivity(Intent, Bundle)
+ * Context.startActivity(Intent, Bundle)} for more details.
+ */
+ public void startActivities(Bundle options) {
+ startActivities(options, new UserHandle(UserHandle.myUserId()));
}
/**
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 9162d29434df..ac36cf714f11 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -974,6 +974,36 @@ public abstract class Context {
public abstract void startActivities(Intent[] intents, Bundle options);
/**
+ * @hide
+ * Launch multiple new activities. This is generally the same as calling
+ * {@link #startActivity(Intent)} for the first Intent in the array,
+ * that activity during its creation calling {@link #startActivity(Intent)}
+ * for the second entry, etc. Note that unlike that approach, generally
+ * none of the activities except the last in the array will be created
+ * at this point, but rather will be created when the user first visits
+ * them (due to pressing back from the activity on top).
+ *
+ * <p>This method throws {@link ActivityNotFoundException}
+ * if there was no Activity found for <em>any</em> given Intent. In this
+ * case the state of the activity stack is undefined (some Intents in the
+ * list may be on it, some not), so you probably want to avoid such situations.
+ *
+ * @param intents An array of Intents to be started.
+ * @param options Additional options for how the Activity should be started.
+ * @param userHandle The user for whom to launch the activities
+ * See {@link android.content.Context#startActivity(Intent, Bundle)
+ * Context.startActivity(Intent, Bundle)} for more details.
+ *
+ * @throws ActivityNotFoundException
+ *
+ * @see {@link #startActivities(Intent[])}
+ * @see PackageManager#resolveActivity
+ */
+ public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
+ throw new RuntimeException("Not implemented. Must override in a subclass.");
+ }
+
+ /**
* Same as {@link #startIntentSender(IntentSender, Intent, int, int, int, Bundle)}
* with no options specified.
*
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index d824f1e668cd..84ad6674309d 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -311,6 +311,12 @@ public class ContextWrapper extends Context {
mBase.startActivities(intents, options);
}
+ /** @hide */
+ @Override
+ public void startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
+ mBase.startActivitiesAsUser(intents, options, userHandle);
+ }
+
@Override
public void startIntentSender(IntentSender intent,
Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 291726a78297..8ba19881f097 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2341,6 +2341,10 @@ public abstract class PackageManager {
public abstract Resources getResourcesForApplication(String appPackageName)
throws NameNotFoundException;
+ /** @hide */
+ public abstract Resources getResourcesForApplicationAsUser(String appPackageName, int userId)
+ throws NameNotFoundException;
+
/**
* Retrieve overall information about an application package defined
* in a package archive file
diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java
index 846443d6d235..42fb5c3cd682 100644
--- a/core/java/android/net/SSLCertificateSocketFactory.java
+++ b/core/java/android/net/SSLCertificateSocketFactory.java
@@ -90,6 +90,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
private byte[] mNpnProtocols = null;
private final int mHandshakeTimeoutMillis;
+ private final int mWriteTimeoutMillis;
private final SSLClientSessionCache mSessionCache;
private final boolean mSecure;
@@ -100,12 +101,21 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
}
private SSLCertificateSocketFactory(
- int handshakeTimeoutMillis, SSLSessionCache cache, boolean secure) {
+ int handshakeTimeoutMillis,
+ int writeTimeoutMillis,
+ SSLSessionCache cache,
+ boolean secure) {
mHandshakeTimeoutMillis = handshakeTimeoutMillis;
+ mWriteTimeoutMillis = writeTimeoutMillis;
mSessionCache = cache == null ? null : cache.mSessionCache;
mSecure = secure;
}
+ private SSLCertificateSocketFactory(
+ int handshakeTimeoutMillis, SSLSessionCache cache, boolean secure) {
+ this(handshakeTimeoutMillis, 0, cache, secure);
+ }
+
/**
* Returns a new socket factory instance with an optional handshake timeout.
*
@@ -162,6 +172,24 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
}
/**
+ * Returns a socket factory (also named SSLSocketFactory, but in a different
+ * namespace) for use with the Apache HTTP stack.
+ *
+ * @param handshakeTimeoutMillis to use for SSL connection handshake, or 0
+ * for none. The socket timeout is reset to 0 after the handshake.
+ * @param writeTimeoutMillis the desired write timeout in milliseconds or 0 for none.
+ * @param cache The {@link SSLSessionCache} to use, or null for no cache.
+ * @return a new SocketFactory with the specified parameters
+ */
+ public static org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(
+ int handshakeTimeoutMillis,
+ int writeTimeoutMillis,
+ SSLSessionCache cache) {
+ return new org.apache.http.conn.ssl.SSLSocketFactory(new SSLCertificateSocketFactory(
+ handshakeTimeoutMillis, writeTimeoutMillis, cache, true));
+ }
+
+ /**
* Verify the hostname of the certificate used by the other end of a
* connected socket. You MUST call this if you did not supply a hostname
* to {@link #createSocket()}. It is harmless to call this method
@@ -348,10 +376,8 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
* To take effect, this option must be set before the blocking method was called.
*
* @param socket a socket created by this factory.
- * @param timeout the desired write timeout in milliseconds.
+ * @param writeTimeoutMilliseconds the desired write timeout in milliseconds.
* @throws IllegalArgumentException if the socket was not created by this factory.
- *
- * @hide
*/
public void setSoWriteTimeout(Socket socket, int writeTimeoutMilliseconds)
throws SocketException {
@@ -378,6 +404,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(k, host, port, close);
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
if (mSecure) {
verifyHostname(s, host);
}
@@ -397,6 +424,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket();
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
return s;
}
@@ -414,6 +442,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
addr, port, localAddr, localPort);
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
return s;
}
@@ -429,6 +458,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(addr, port);
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
return s;
}
@@ -445,6 +475,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
host, port, localAddr, localPort);
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
if (mSecure) {
verifyHostname(s, host);
}
@@ -462,6 +493,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(host, port);
s.setNpnProtocols(mNpnProtocols);
s.setHandshakeTimeout(mHandshakeTimeoutMillis);
+ s.setSoWriteTimeout(mWriteTimeoutMillis);
if (mSecure) {
verifyHostname(s, host);
}
diff --git a/core/java/android/net/http/AndroidHttpClient.java b/core/java/android/net/http/AndroidHttpClient.java
index c534e58f37e1..8169a943c206 100644
--- a/core/java/android/net/http/AndroidHttpClient.java
+++ b/core/java/android/net/http/AndroidHttpClient.java
@@ -16,7 +16,16 @@
package android.net.http;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.SSLCertificateSocketFactory;
+import android.net.SSLSessionCache;
+import android.os.Looper;
+import android.util.Base64;
+import android.util.Log;
+
import com.android.internal.http.HttpDateTime;
+
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
@@ -25,18 +34,18 @@ import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.protocol.ClientContext;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.params.HttpClientParams;
+import org.apache.http.client.protocol.ClientContext;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.entity.AbstractHttpEntity;
+import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.RequestWrapper;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
@@ -44,25 +53,17 @@ import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
+import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.BasicHttpContext;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
+import java.net.URI;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
-import java.net.URI;
-
-import android.content.Context;
-import android.content.ContentResolver;
-import android.net.SSLCertificateSocketFactory;
-import android.net.SSLSessionCache;
-import android.os.Looper;
-import android.util.Base64;
-import android.util.Log;
/**
* Implementation of the Apache {@link DefaultHttpClient} that is configured with
@@ -134,7 +135,7 @@ public final class AndroidHttpClient implements HttpClient {
PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https",
SSLCertificateSocketFactory.getHttpSocketFactory(
- SOCKET_OPERATION_TIMEOUT, sessionCache), 443));
+ SOCKET_OPERATION_TIMEOUT, SOCKET_OPERATION_TIMEOUT, sessionCache), 443));
ClientConnectionManager manager =
new ThreadSafeClientConnManager(params, schemeRegistry);
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 5c4c036e937c..33155665fb59 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -31,6 +31,7 @@ public class Environment {
private static final String TAG = "Environment";
private static final String ENV_EXTERNAL_STORAGE = "EXTERNAL_STORAGE";
+ private static final String ENV_EMULATED_STORAGE_SOURCE = "EMULATED_STORAGE_SOURCE";
private static final String ENV_EMULATED_STORAGE_TARGET = "EMULATED_STORAGE_TARGET";
private static final String ENV_MEDIA_STORAGE = "MEDIA_STORAGE";
@@ -134,6 +135,10 @@ public class Environment {
return mExternalStorage;
}
+ public File getExternalStorageObbDirectory() {
+ return mExternalStorageAndroidObb;
+ }
+
public File getExternalStoragePublicDirectory(String type) {
return new File(mExternalStorage, type);
}
@@ -302,6 +307,23 @@ public class Environment {
return new File(System.getenv(ENV_EXTERNAL_STORAGE));
}
+ /** {@hide} */
+ public static File getLegacyExternalStorageObbDirectory() {
+ return buildPath(getLegacyExternalStorageDirectory(), DIRECTORY_ANDROID, "obb");
+ }
+
+ /** {@hide} */
+ public static File getEmulatedStorageSource(int userId) {
+ // /mnt/shell/emulated/0
+ return new File(System.getenv(ENV_EMULATED_STORAGE_SOURCE), String.valueOf(userId));
+ }
+
+ /** {@hide} */
+ public static File getEmulatedStorageObbSource() {
+ // /mnt/shell/emulated/obb
+ return new File(System.getenv(ENV_EMULATED_STORAGE_SOURCE), "obb");
+ }
+
/**
* Standard directory in which to place any audio files that should be
* in the regular list of music for the user.
diff --git a/core/java/android/os/storage/IMountService.java b/core/java/android/os/storage/IMountService.java
index 0b1631684257..fc186177ae18 100644
--- a/core/java/android/os/storage/IMountService.java
+++ b/core/java/android/os/storage/IMountService.java
@@ -489,13 +489,14 @@ public interface IMountService extends IInterface {
* IObbActionListener to inform it of the terminal state of the
* call.
*/
- public void mountObb(String filename, String key, IObbActionListener token, int nonce)
- throws RemoteException {
+ public void mountObb(String rawPath, String canonicalPath, String key,
+ IObbActionListener token, int nonce) throws RemoteException {
Parcel _data = Parcel.obtain();
Parcel _reply = Parcel.obtain();
try {
_data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(filename);
+ _data.writeString(rawPath);
+ _data.writeString(canonicalPath);
_data.writeString(key);
_data.writeStrongBinder((token != null ? token.asBinder() : null));
_data.writeInt(nonce);
@@ -514,13 +515,14 @@ public interface IMountService extends IInterface {
* IObbActionListener to inform it of the terminal state of the
* call.
*/
- public void unmountObb(String filename, boolean force, IObbActionListener token,
- int nonce) throws RemoteException {
+ public void unmountObb(
+ String rawPath, boolean force, IObbActionListener token, int nonce)
+ throws RemoteException {
Parcel _data = Parcel.obtain();
Parcel _reply = Parcel.obtain();
try {
_data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(filename);
+ _data.writeString(rawPath);
_data.writeInt((force ? 1 : 0));
_data.writeStrongBinder((token != null ? token.asBinder() : null));
_data.writeInt(nonce);
@@ -536,13 +538,13 @@ public interface IMountService extends IInterface {
* Checks whether the specified Opaque Binary Blob (OBB) is mounted
* somewhere.
*/
- public boolean isObbMounted(String filename) throws RemoteException {
+ public boolean isObbMounted(String rawPath) throws RemoteException {
Parcel _data = Parcel.obtain();
Parcel _reply = Parcel.obtain();
boolean _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(filename);
+ _data.writeString(rawPath);
mRemote.transact(Stub.TRANSACTION_isObbMounted, _data, _reply, 0);
_reply.readException();
_result = 0 != _reply.readInt();
@@ -556,13 +558,13 @@ public interface IMountService extends IInterface {
/**
* Gets the path to the mounted Opaque Binary Blob (OBB).
*/
- public String getMountedObbPath(String filename) throws RemoteException {
+ public String getMountedObbPath(String rawPath) throws RemoteException {
Parcel _data = Parcel.obtain();
Parcel _reply = Parcel.obtain();
String _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
- _data.writeString(filename);
+ _data.writeString(rawPath);
mRemote.transact(Stub.TRANSACTION_getMountedObbPath, _data, _reply, 0);
_reply.readException();
_result = _reply.readString();
@@ -1042,15 +1044,14 @@ public interface IMountService extends IInterface {
}
case TRANSACTION_mountObb: {
data.enforceInterface(DESCRIPTOR);
- String filename;
- filename = data.readString();
- String key;
- key = data.readString();
+ final String rawPath = data.readString();
+ final String canonicalPath = data.readString();
+ final String key = data.readString();
IObbActionListener observer;
observer = IObbActionListener.Stub.asInterface(data.readStrongBinder());
int nonce;
nonce = data.readInt();
- mountObb(filename, key, observer, nonce);
+ mountObb(rawPath, canonicalPath, key, observer, nonce);
reply.writeNoException();
return true;
}
@@ -1194,7 +1195,7 @@ public interface IMountService extends IInterface {
/**
* Gets the path to the mounted Opaque Binary Blob (OBB).
*/
- public String getMountedObbPath(String filename) throws RemoteException;
+ public String getMountedObbPath(String rawPath) throws RemoteException;
/**
* Gets an Array of currently known secure container IDs
@@ -1220,7 +1221,7 @@ public interface IMountService extends IInterface {
* Checks whether the specified Opaque Binary Blob (OBB) is mounted
* somewhere.
*/
- public boolean isObbMounted(String filename) throws RemoteException;
+ public boolean isObbMounted(String rawPath) throws RemoteException;
/*
* Returns true if the specified container is mounted
@@ -1243,8 +1244,8 @@ public interface IMountService extends IInterface {
* MountService will call back to the supplied IObbActionListener to inform
* it of the terminal state of the call.
*/
- public void mountObb(String filename, String key, IObbActionListener token, int nonce)
- throws RemoteException;
+ public void mountObb(String rawPath, String canonicalPath, String key,
+ IObbActionListener token, int nonce) throws RemoteException;
/*
* Mount a secure container with the specified key and owner UID. Returns an
@@ -1287,7 +1288,7 @@ public interface IMountService extends IInterface {
* MountService will call back to the supplied IObbActionListener to inform
* it of the terminal state of the call.
*/
- public void unmountObb(String filename, boolean force, IObbActionListener token, int nonce)
+ public void unmountObb(String rawPath, boolean force, IObbActionListener token, int nonce)
throws RemoteException;
/*
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 54c8709d605b..862a95cb9d13 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -28,6 +28,10 @@ import android.os.ServiceManager;
import android.util.Log;
import android.util.SparseArray;
+import com.android.internal.util.Preconditions;
+
+import java.io.File;
+import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
@@ -443,25 +447,23 @@ public class StorageManager
* That is, shared UID applications can attempt to mount any other
* application's OBB that shares its UID.
*
- * @param filename the path to the OBB file
+ * @param rawPath the path to the OBB file
* @param key secret used to encrypt the OBB; may be <code>null</code> if no
* encryption was used on the OBB.
* @param listener will receive the success or failure of the operation
* @return whether the mount call was successfully queued or not
*/
- public boolean mountObb(String filename, String key, OnObbStateChangeListener listener) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
-
- if (listener == null) {
- throw new IllegalArgumentException("listener cannot be null");
- }
+ public boolean mountObb(String rawPath, String key, OnObbStateChangeListener listener) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
+ Preconditions.checkNotNull(listener, "listener cannot be null");
try {
+ final String canonicalPath = new File(rawPath).getCanonicalPath();
final int nonce = mObbActionListener.addListener(listener);
- mMountService.mountObb(filename, key, mObbActionListener, nonce);
+ mMountService.mountObb(rawPath, canonicalPath, key, mObbActionListener, nonce);
return true;
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Failed to resolve path: " + rawPath, e);
} catch (RemoteException e) {
Log.e(TAG, "Failed to mount OBB", e);
}
@@ -483,24 +485,19 @@ public class StorageManager
* application's OBB that shares its UID.
* <p>
*
- * @param filename path to the OBB file
+ * @param rawPath path to the OBB file
* @param force whether to kill any programs using this in order to unmount
* it
* @param listener will receive the success or failure of the operation
* @return whether the unmount call was successfully queued or not
*/
- public boolean unmountObb(String filename, boolean force, OnObbStateChangeListener listener) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
-
- if (listener == null) {
- throw new IllegalArgumentException("listener cannot be null");
- }
+ public boolean unmountObb(String rawPath, boolean force, OnObbStateChangeListener listener) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
+ Preconditions.checkNotNull(listener, "listener cannot be null");
try {
final int nonce = mObbActionListener.addListener(listener);
- mMountService.unmountObb(filename, force, mObbActionListener, nonce);
+ mMountService.unmountObb(rawPath, force, mObbActionListener, nonce);
return true;
} catch (RemoteException e) {
Log.e(TAG, "Failed to mount OBB", e);
@@ -512,16 +509,14 @@ public class StorageManager
/**
* Check whether an Opaque Binary Blob (OBB) is mounted or not.
*
- * @param filename path to OBB image
+ * @param rawPath path to OBB image
* @return true if OBB is mounted; false if not mounted or on error
*/
- public boolean isObbMounted(String filename) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
+ public boolean isObbMounted(String rawPath) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
try {
- return mMountService.isObbMounted(filename);
+ return mMountService.isObbMounted(rawPath);
} catch (RemoteException e) {
Log.e(TAG, "Failed to check if OBB is mounted", e);
}
@@ -534,17 +529,15 @@ public class StorageManager
* give you the path to where you can obtain access to the internals of the
* OBB.
*
- * @param filename path to OBB image
+ * @param rawPath path to OBB image
* @return absolute path to mounted OBB image data or <code>null</code> if
* not mounted or exception encountered trying to read status
*/
- public String getMountedObbPath(String filename) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
+ public String getMountedObbPath(String rawPath) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
try {
- return mMountService.getMountedObbPath(filename);
+ return mMountService.getMountedObbPath(rawPath);
} catch (RemoteException e) {
Log.e(TAG, "Failed to find mounted path for OBB", e);
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 9aae1ec560bf..965e4880b7ec 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3563,7 +3563,8 @@ public final class Settings {
public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
/**
- * @deprecated Moved to Global namespace
+ * @deprecated Use {@link android.provider.Settings.Global#WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON}
+ * instead.
* {@hide}
*/
@Deprecated
@@ -3608,7 +3609,8 @@ public final class Settings {
* the user turns off tethering.
*
* @hide
- * @deprecated moved to Global
+ * @deprecated Use {@link android.provider.Settings.Global#WIFI_SAVED_STATE}
+ * instead.
*/
@Deprecated
public static final String WIFI_SAVED_STATE = Global.WIFI_SAVED_STATE;
@@ -3637,6 +3639,7 @@ public final class Settings {
/**
* The acceptable packet loss percentage (range 0 - 100) before trying
* another AP on the same network.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE =
@@ -3645,12 +3648,14 @@ public final class Settings {
/**
* The number of access points required for a network in order for the
* watchdog to monitor it.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
/**
* The delay between background checks.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS =
@@ -3659,6 +3664,7 @@ public final class Settings {
/**
* Whether the Wi-Fi watchdog is enabled for background checking even
* after it thinks the user has connected to a good access point.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED =
@@ -3666,6 +3672,7 @@ public final class Settings {
/**
* The timeout for a background ping
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS =
@@ -3676,6 +3683,7 @@ public final class Settings {
* fail. Again, if these fail, they will *not* be used in packet loss
* calculation. For example, one network always seemed to time out for
* the first couple pings, so this is set to 3 by default.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT =
@@ -3686,6 +3694,7 @@ public final class Settings {
* If this number is reached, the watchdog will no longer monitor the
* initial connection state for the network. This is a safeguard for
* networks containing multiple APs whose DNS does not respond to pings.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
@@ -3697,60 +3706,73 @@ public final class Settings {
/**
* A comma-separated list of SSIDs for which the Wi-Fi watchdog should be enabled.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
/**
* The number of pings to test if an access point is a good connection.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
/**
* The delay between pings.
+ * @deprecated This setting is not used.
*/
@Deprecated
public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
/**
* The timeout per ping.
+ * @deprecated This setting is not used.
*/
@Deprecated
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";
@@ -3809,11 +3831,11 @@ public final class Settings {
public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
/**
- * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile
- * data connectivity to be established after a disconnect from Wi-Fi.
+ * @deprecated Use
+ * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
*/
public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
- "wifi_mobile_data_transition_wakelock_timeout_ms";
+ Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
/**
* Whether network service discovery is enabled.
@@ -4158,16 +4180,6 @@ public final class Settings {
public static final String ERROR_LOGCAT_PREFIX =
"logcat_for_";
-
- /**
- * Screen timeout in milliseconds corresponding to the
- * PowerManager's POKE_LOCK_SHORT_TIMEOUT flag (i.e. the fastest
- * possible screen timeout behavior.)
- * @hide
- */
- public static final String SHORT_KEYLIGHT_DELAY_MS =
- "short_keylight_delay_ms";
-
/**
* The interval in minutes after which the amount of free storage left on the
* device is logged to the event log
@@ -4220,7 +4232,8 @@ public final class Settings {
* When idle, it is possible for the device to be switched from Wi-Fi to
* the mobile data network.
* @hide
- * @deprecated Moved to Global
+ * @deprecated Use {@link android.provider.Settings.Global#WIFI_IDLE_MS}
+ * instead.
*/
@Deprecated
public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS;
@@ -4230,7 +4243,8 @@ public final class Settings {
* to connect. This is necessary to connect to an access point when
* device is on the move and the screen is off.
* @hide
- * @deprecated Moved to Global
+ * @deprecated Use {@link android.provider.Settings.Global#WIFI_FRAMEWORK_SCAN_INTERVAL_MS}
+ * instead.
*/
@Deprecated
public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS =
@@ -4239,14 +4253,16 @@ public final class Settings {
/**
* The interval in milliseconds to scan as used by the wifi supplicant
* @hide
- * @deprecated Moved to Global
+ * @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 Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_POLL_INTERVAL_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4254,7 +4270,8 @@ public final class Settings {
Global.PDP_WATCHDOG_POLL_INTERVAL_MS;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_LONG_POLL_INTERVAL_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4262,7 +4279,8 @@ public final class Settings {
Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4270,7 +4288,8 @@ public final class Settings {
Global.PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_TRIGGER_PACKET_COUNT}
+ * instead.
* @hide
*/
@Deprecated
@@ -4278,7 +4297,8 @@ public final class Settings {
Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_ERROR_POLL_COUNT}
+ * instead.
* @hide
*/
@Deprecated
@@ -4286,7 +4306,8 @@ public final class Settings {
Global.PDP_WATCHDOG_ERROR_POLL_COUNT;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT}
+ * instead.
* @hide
*/
@Deprecated
@@ -4294,7 +4315,8 @@ public final class Settings {
Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4302,7 +4324,8 @@ public final class Settings {
Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4310,7 +4333,8 @@ public final class Settings {
Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS;
/**
- * @deprecated Moved to Settings.Global
+ * @deprecated Use {@link android.provider.Settings.Global#GPRS_REGISTER_CHECK_PERIOD_MS}
+ * instead.
* @hide
*/
@Deprecated
@@ -4851,25 +4875,6 @@ public final class Settings {
"contacts_preauth_uri_expiration";
/**
- * Overlay display devices setting.
- * The associated value is a specially formatted string that describes the
- * size and density of simulated secondary display devices.
- * <p>
- * Format: {width}x{height}/{dpi};...
- * </p><p>
- * Example:
- * <ul>
- * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li>
- * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first
- * at 1080p and the second at 720p.</li>
- * <li>If the value is empty, then no overlay display devices are created.</li>
- * </ul></p>
- *
- * @hide
- */
- public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
-
- /**
* This are the settings to be backed up.
*
* NOTE: Settings are backed up and restored in the order they appear
@@ -5741,6 +5746,24 @@ public final class Settings {
*/
public static final String MODE_RINGER = "mode_ringer";
+ /**
+ * Overlay display devices setting.
+ * The associated value is a specially formatted string that describes the
+ * size and density of simulated secondary display devices.
+ * <p>
+ * Format: {width}x{height}/{dpi};...
+ * </p><p>
+ * Example:
+ * <ul>
+ * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li>
+ * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first
+ * at 1080p and the second at 720p.</li>
+ * <li>If the value is empty, then no overlay display devices are created.</li>
+ * </ul></p>
+ *
+ * @hide
+ */
+ public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
// Populated lazily, guarded by class object:
private static NameValueCache sNameValueCache = new NameValueCache(
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index c703aaf88b50..b64a06e9cc79 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -166,6 +166,7 @@ class GLES20Canvas extends HardwareCanvas {
static native void nSetLayerColorFilter(int layerId, int nativeColorFilter);
static native void nUpdateTextureLayer(int layerId, int width, int height, boolean opaque,
SurfaceTexture surface);
+ static native void nClearLayerTexture(int layerId);
static native void nSetTextureLayerTransform(int layerId, int matrix);
static native void nDestroyLayer(int layerId);
static native void nDestroyLayerDeferred(int layerId);
diff --git a/core/java/android/view/GLES20Layer.java b/core/java/android/view/GLES20Layer.java
index a462ed635ea5..812fb977421e 100644
--- a/core/java/android/view/GLES20Layer.java
+++ b/core/java/android/view/GLES20Layer.java
@@ -66,6 +66,11 @@ abstract class GLES20Layer extends HardwareLayer {
mLayer = 0;
}
+ @Override
+ void clearStorage() {
+ if (mLayer != 0) GLES20Canvas.nClearLayerTexture(mLayer);
+ }
+
static class Finalizer {
private int mLayerId;
diff --git a/core/java/android/view/GLES20TextureLayer.java b/core/java/android/view/GLES20TextureLayer.java
index 797c7342c947..e863e49a0141 100644
--- a/core/java/android/view/GLES20TextureLayer.java
+++ b/core/java/android/view/GLES20TextureLayer.java
@@ -39,7 +39,7 @@ class GLES20TextureLayer extends GLES20Layer {
mFinalizer = new Finalizer(mLayer);
} else {
mFinalizer = null;
- }
+ }
}
@Override
diff --git a/core/java/android/view/HardwareLayer.java b/core/java/android/view/HardwareLayer.java
index d6868ca16f9a..d3bc35a2af42 100644
--- a/core/java/android/view/HardwareLayer.java
+++ b/core/java/android/view/HardwareLayer.java
@@ -204,4 +204,9 @@ abstract class HardwareLayer {
* @param dirtyRect The dirty region of the layer that needs to be redrawn
*/
abstract void redrawLater(DisplayList displayList, Rect dirtyRect);
+
+ /**
+ * Indicates that this layer has lost its underlying storage.
+ */
+ abstract void clearStorage();
}
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index 49f9e9dec140..da925c787a2c 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -864,12 +864,6 @@ public abstract class HardwareRenderer {
if (mEglContext == null) {
mEglContext = createContext(sEgl, sEglDisplay, sEglConfig);
- if (mEglContext == null) {
- //noinspection ConstantConditions
- throw new IllegalStateException("Could not create an EGL context. " +
- "eglCreateContext failed with error: " +
- GLUtils.getEGLErrorString(sEgl.eglGetError()));
- }
sEglContextStorage.set(createManagedContext(mEglContext));
}
}
@@ -998,8 +992,15 @@ public abstract class HardwareRenderer {
EGLContext createContext(EGL10 egl, EGLDisplay eglDisplay, EGLConfig eglConfig) {
int[] attribs = { EGL_CONTEXT_CLIENT_VERSION, mGlVersion, EGL_NONE };
- return egl.eglCreateContext(eglDisplay, eglConfig, EGL_NO_CONTEXT,
- mGlVersion != 0 ? attribs : null);
+ EGLContext context = egl.eglCreateContext(eglDisplay, eglConfig, EGL_NO_CONTEXT,
+ mGlVersion != 0 ? attribs : null);
+ if (context == null || context == EGL_NO_CONTEXT) {
+ //noinspection ConstantConditions
+ throw new IllegalStateException(
+ "Could not create an EGL context. eglCreateContext failed with error: " +
+ GLUtils.getEGLErrorString(sEgl.eglGetError()));
+ }
+ return context;
}
@Override
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index fa0313949e01..123ce2a92d9b 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -17,8 +17,11 @@
package android.view;
import android.content.Context;
+import android.os.SystemClock;
import android.util.FloatMath;
+import java.util.Arrays;
+
/**
* Detects scaling transformation gestures using the supplied {@link MotionEvent}s.
* The {@link OnScaleGestureListener} callback will notify users when a particular
@@ -139,6 +142,12 @@ public class ScaleGestureDetector {
private int mSpanSlop;
private int mMinSpan;
+ private float[] mTouchHistoryLastAccepted;
+ private int[] mTouchHistoryDirection;
+ private long[] mTouchHistoryLastAcceptedTime;
+
+ private static final long TOUCH_STABILIZE_TIME = 128; // ms
+
/**
* Consistency verifier for debugging purposes.
*/
@@ -155,6 +164,120 @@ public class ScaleGestureDetector {
}
/**
+ * The touchMajor/touchMinor elements of a MotionEvent can flutter/jitter on
+ * some hardware/driver combos. Smooth it out to get kinder, gentler behavior.
+ * @param ev MotionEvent to add to the ongoing history
+ */
+ private void addTouchHistory(MotionEvent ev) {
+ final long currentTime = SystemClock.uptimeMillis();
+ final int count = ev.getPointerCount();
+ for (int i = 0; i < count; i++) {
+ final int id = ev.getPointerId(i);
+ ensureTouchHistorySize(id);
+
+ final boolean hasLastAccepted = !Float.isNaN(mTouchHistoryLastAccepted[id]);
+ boolean accept = true;
+ final int historySize = ev.getHistorySize();
+ for (int h = 0; h < historySize + 1; h++) {
+ final float major;
+ final float minor;
+ if (h < historySize) {
+ major = ev.getHistoricalTouchMajor(i, h);
+ minor = ev.getHistoricalTouchMinor(i, h);
+ } else {
+ major = ev.getTouchMajor(i);
+ minor = ev.getTouchMinor(i);
+ }
+ final float avg = (major + minor) / 2;
+
+ if (hasLastAccepted) {
+ final int directionSig = (int) Math.signum(avg - mTouchHistoryLastAccepted[id]);
+ if (directionSig != mTouchHistoryDirection[id] ||
+ (directionSig == 0 && mTouchHistoryDirection[id] == 0)) {
+ mTouchHistoryDirection[id] = directionSig;
+ final long time = h < historySize ? ev.getHistoricalEventTime(h)
+ : ev.getEventTime();
+ mTouchHistoryLastAcceptedTime[id] = time;
+ accept = false;
+ }
+ if (currentTime - mTouchHistoryLastAcceptedTime[id] < TOUCH_STABILIZE_TIME) {
+ accept = false;
+ }
+ }
+ }
+
+ if (accept) {
+ float newAccepted = (ev.getTouchMajor(i) + ev.getTouchMinor(i)) / 2;
+ if (hasLastAccepted) {
+ newAccepted = (mTouchHistoryLastAccepted[id] + newAccepted) / 2;
+ }
+ mTouchHistoryLastAccepted[id] = newAccepted;
+ mTouchHistoryDirection[id] = 0;
+ mTouchHistoryLastAcceptedTime[id] = ev.getEventTime();
+ }
+ }
+ }
+
+ /**
+ * Clear out the touch history for a given pointer id.
+ * @param id pointer id to clear
+ * @see #addTouchHistory(MotionEvent)
+ */
+ private void removeTouchHistoryForId(int id) {
+ mTouchHistoryLastAccepted[id] = Float.NaN;
+ mTouchHistoryDirection[id] = 0;
+ mTouchHistoryLastAcceptedTime[id] = 0;
+ }
+
+ /**
+ * Get the adjusted combined touchMajor/touchMinor value for a given pointer id
+ * @param id the pointer id of the data to obtain
+ * @return the adjusted major/minor value for the point at id
+ * @see #addTouchHistory(MotionEvent)
+ */
+ private float getAdjustedTouchHistory(int id) {
+ return mTouchHistoryLastAccepted[id];
+ }
+
+ /**
+ * Clear all touch history tracking. Useful in ACTION_CANCEL or ACTION_UP.
+ * @see #addTouchHistory(MotionEvent)
+ */
+ private void clearTouchHistory() {
+ Arrays.fill(mTouchHistoryLastAccepted, Float.NaN);
+ Arrays.fill(mTouchHistoryDirection, 0);
+ Arrays.fill(mTouchHistoryLastAcceptedTime, 0);
+ }
+
+ private void ensureTouchHistorySize(int id) {
+ final int requiredSize = id + 1;
+ if (mTouchHistoryLastAccepted == null || mTouchHistoryLastAccepted.length < requiredSize) {
+ final float[] newLastAccepted = new float[requiredSize];
+ final int[] newDirection = new int[requiredSize];
+ final long[] newLastAcceptedTime = new long[requiredSize];
+
+ int oldLength = 0;
+ if (mTouchHistoryLastAccepted != null) {
+ System.arraycopy(mTouchHistoryLastAccepted, 0, newLastAccepted, 0,
+ mTouchHistoryLastAccepted.length);
+ System.arraycopy(mTouchHistoryDirection, 0, newDirection, 0,
+ mTouchHistoryDirection.length);
+ System.arraycopy(mTouchHistoryLastAcceptedTime, 0, newLastAcceptedTime, 0,
+ mTouchHistoryLastAcceptedTime.length);
+ oldLength = mTouchHistoryLastAccepted.length;
+ }
+
+ Arrays.fill(newLastAccepted, oldLength, newLastAccepted.length, Float.NaN);
+ Arrays.fill(newDirection, oldLength, newDirection.length, 0);
+ Arrays.fill(newLastAcceptedTime, oldLength, newLastAcceptedTime.length, 0);
+
+ mTouchHistoryLastAccepted = newLastAccepted;
+ mTouchHistoryDirection = newDirection;
+ mTouchHistoryLastAcceptedTime = newLastAcceptedTime;
+ }
+ }
+
+ /**
* Accepts MotionEvents and dispatches events to a {@link OnScaleGestureListener}
* when appropriate.
*
@@ -186,6 +309,7 @@ public class ScaleGestureDetector {
}
if (streamComplete) {
+ clearTouchHistory();
return true;
}
}
@@ -208,13 +332,19 @@ public class ScaleGestureDetector {
final float focusX = sumX / div;
final float focusY = sumY / div;
+ if (pointerUp) {
+ removeTouchHistoryForId(event.getPointerId(event.getActionIndex()));
+ } else {
+ addTouchHistory(event);
+ }
+
// Determine average deviation from focal point
float devSumX = 0, devSumY = 0;
for (int i = 0; i < count; i++) {
if (skipIndex == i) continue;
// Average touch major and touch minor and convert the resulting diameter into a radius.
- final float touchSize = (event.getTouchMajor(i) + event.getTouchMinor(i)) / 4;
+ final float touchSize = getAdjustedTouchHistory(event.getPointerId(i));
devSumX += Math.abs(event.getX(i) - focusX) + touchSize;
devSumY += Math.abs(event.getY(i) - focusY) + touchSize;
}
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 7e335f042deb..876b7d847919 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -224,6 +224,7 @@ public class TextureView extends View {
private void destroySurface() {
if (mLayer != null) {
mSurface.detachFromGLContext();
+ mLayer.clearStorage();
boolean shouldRelease = true;
if (mListener != null) {
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 30b8b853a610..ecacaca62f2d 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -4348,13 +4348,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @return Whether any parent scrolled.
*/
public boolean requestRectangleOnScreen(Rect rectangle, boolean immediate) {
- if (mAttachInfo == null) {
+ if (mParent == null) {
return false;
}
View child = this;
- RectF position = mAttachInfo.mTmpTransformRect;
+ RectF position = (mAttachInfo != null) ? mAttachInfo.mTmpTransformRect : new RectF();
position.set(rectangle);
ViewParent parent = mParent;
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java
index 8315bd768461..d7c7f4640c56 100644
--- a/core/java/android/view/VolumePanel.java
+++ b/core/java/android/view/VolumePanel.java
@@ -699,9 +699,12 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
if (sc.seekbarView.getMax() != max) {
sc.seekbarView.setMax(max);
}
+
sc.seekbarView.setProgress(index);
- if (streamType != mAudioManager.getMasterStreamType()
- && streamType != AudioService.STREAM_REMOTE_MUSIC && isMuted(streamType)) {
+ if (((flags & AudioManager.FLAG_FIXED_VOLUME) != 0) ||
+ (streamType != mAudioManager.getMasterStreamType() &&
+ streamType != AudioService.STREAM_REMOTE_MUSIC &&
+ isMuted(streamType))) {
sc.seekbarView.setEnabled(false);
} else {
sc.seekbarView.setEnabled(true);
diff --git a/core/java/android/webkit/JniUtil.java b/core/java/android/webkit/JniUtil.java
index e3e6092e85a5..01a81c425458 100644
--- a/core/java/android/webkit/JniUtil.java
+++ b/core/java/android/webkit/JniUtil.java
@@ -173,8 +173,8 @@ class JniUtil {
checkInitialized();
// If the device has not checked in it won't have pulled down the system setting for the
// Autofill Url. In that case we will not make autofill server requests.
- return Settings.Secure.getString(sContext.getContentResolver(),
- Settings.Secure.WEB_AUTOFILL_QUERY_URL);
+ return Settings.Global.getString(sContext.getContentResolver(),
+ Settings.Global.WEB_AUTOFILL_QUERY_URL);
}
private static boolean canSatisfyMemoryAllocation(long bytesRequested) {
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index be2d8634121d..aa689044e510 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -367,6 +367,7 @@ public abstract class WebSettings {
* internal pattern. Default is true.
*
* @deprecated This method is now obsolete.
+ * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
*/
@Deprecated
public void setUseWebViewBackgroundForOverscrollBackground(boolean view) {
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 920d44fffeb8..62643154cbfd 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -675,6 +675,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
static final Interpolator sLinearInterpolator = new LinearInterpolator();
/**
+ * The saved state that we will be restoring from when we next sync.
+ * Kept here so that if we happen to be asked to save our state before
+ * the sync happens, we can return this existing data rather than losing
+ * it.
+ */
+ private SavedState mPendingSync;
+
+ /**
* Interface definition for a callback to be invoked when the list or grid
* has been scrolled.
*/
@@ -1612,6 +1620,21 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
SavedState ss = new SavedState(superState);
+ if (mPendingSync != null) {
+ // Just keep what we last restored.
+ ss.selectedId = mPendingSync.selectedId;
+ ss.firstId = mPendingSync.firstId;
+ ss.viewTop = mPendingSync.viewTop;
+ ss.position = mPendingSync.position;
+ ss.height = mPendingSync.height;
+ ss.filter = mPendingSync.filter;
+ ss.inActionMode = mPendingSync.inActionMode;
+ ss.checkedItemCount = mPendingSync.checkedItemCount;
+ ss.checkState = mPendingSync.checkState;
+ ss.checkIdState = mPendingSync.checkIdState;
+ return ss;
+ }
+
boolean haveChildren = getChildCount() > 0 && mItemCount > 0;
long selectedId = getSelectedItemId();
ss.selectedId = selectedId;
@@ -1692,6 +1715,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
if (ss.selectedId >= 0) {
mNeedSync = true;
+ mPendingSync = ss;
mSyncRowId = ss.selectedId;
mSyncPosition = ss.position;
mSpecificTop = ss.viewTop;
@@ -1702,6 +1726,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
setNextSelectedPositionInt(INVALID_POSITION);
mSelectorPosition = INVALID_POSITION;
mNeedSync = true;
+ mPendingSync = ss;
mSyncRowId = ss.firstId;
mSyncPosition = ss.position;
mSpecificTop = ss.viewTop;
@@ -1803,6 +1828,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mDataChanged = false;
mPositionScrollAfterLayout = null;
mNeedSync = false;
+ mPendingSync = null;
mOldSelectedPosition = INVALID_POSITION;
mOldSelectedRowId = INVALID_ROW_ID;
setSelectedPositionInt(INVALID_POSITION);
@@ -5209,6 +5235,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
if (mNeedSync) {
// Update this first, since setNextSelectedPositionInt inspects it
mNeedSync = false;
+ mPendingSync = null;
if (mTranscriptMode == TRANSCRIPT_MODE_ALWAYS_SCROLL) {
mLayoutMode = LAYOUT_FORCE_BOTTOM;
@@ -5324,6 +5351,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mNextSelectedPosition = INVALID_POSITION;
mNextSelectedRowId = INVALID_ROW_ID;
mNeedSync = false;
+ mPendingSync = null;
mSelectorPosition = INVALID_POSITION;
checkSelectionChanged();
}
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 6afaba32311d..ea50e2e438ec 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -354,7 +354,7 @@ public class ProgressBar extends View {
Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
shapeDrawable.getPaint().setShader(bitmapShader);
- return (clip) ? new ClipDrawable(shapeDrawable, Gravity.START,
+ return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT,
ClipDrawable.HORIZONTAL) : shapeDrawable;
}
@@ -1040,6 +1040,11 @@ public class ProgressBar extends View {
}
}
}
+ if (isLayoutRtl()) {
+ int tempLeft = left;
+ left = w - right;
+ right = w - tempLeft;
+ }
mIndeterminateDrawable.setBounds(left, top, right, bottom);
}
@@ -1057,7 +1062,12 @@ public class ProgressBar extends View {
// Translate canvas so a indeterminate circular progress bar with padding
// rotates properly in its animation
canvas.save();
- canvas.translate(mPaddingLeft, mPaddingTop);
+ if(isLayoutRtl()) {
+ canvas.translate(getWidth() - mPaddingRight, mPaddingTop);
+ canvas.scale(-1.0f, 1.0f);
+ } else {
+ canvas.translate(mPaddingLeft, mPaddingTop);
+ }
long time = getDrawingTime();
if (mHasAnimation) {
mAnimation.getTransformation(time, mTransformation);
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 294d4c44028c..0737b52bdac3 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -28,8 +28,10 @@ oneway interface IStatusBar
void updateNotification(IBinder key, in StatusBarNotification notification);
void removeNotification(IBinder key);
void disable(int state);
- void animateExpand();
- void animateCollapse();
+ void animateExpandNotifications();
+ void animateCollapseNotifications();
+ void animateExpandQuickSettings();
+ void animateCollapseQuickSettings();
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 c64f1700d257..60e2b3436b39 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -24,8 +24,10 @@ import com.android.internal.statusbar.StatusBarNotification;
/** @hide */
interface IStatusBarService
{
- void expand();
- void collapse();
+ void expandNotifications();
+ void collapseNotifications();
+ void expandQuickSettings();
+ void collapseQuickSettings();
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);
diff --git a/core/java/com/android/internal/statusbar/StatusBarIcon.java b/core/java/com/android/internal/statusbar/StatusBarIcon.java
index 3333c822edaa..e0792cb37646 100644
--- a/core/java/com/android/internal/statusbar/StatusBarIcon.java
+++ b/core/java/com/android/internal/statusbar/StatusBarIcon.java
@@ -18,18 +18,21 @@ package com.android.internal.statusbar;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.UserHandle;
public class StatusBarIcon implements Parcelable {
public String iconPackage;
+ public UserHandle user;
public int iconId;
public int iconLevel;
public boolean visible = true;
public int number;
public CharSequence contentDescription;
- public StatusBarIcon(String iconPackage, int iconId, int iconLevel, int number,
+ public StatusBarIcon(String iconPackage, UserHandle user, int iconId, int iconLevel, int number,
CharSequence contentDescription) {
this.iconPackage = iconPackage;
+ this.user = user;
this.iconId = iconId;
this.iconLevel = iconLevel;
this.number = number;
@@ -38,15 +41,16 @@ public class StatusBarIcon implements Parcelable {
@Override
public String toString() {
- return "StatusBarIcon(pkg=" + this.iconPackage + " id=0x" + Integer.toHexString(this.iconId)
+ return "StatusBarIcon(pkg=" + this.iconPackage + "user=" + user.getIdentifier()
+ + " id=0x" + Integer.toHexString(this.iconId)
+ " level=" + this.iconLevel + " visible=" + visible
+ " num=" + this.number + " )";
}
@Override
public StatusBarIcon clone() {
- StatusBarIcon that = new StatusBarIcon(this.iconPackage, this.iconId, this.iconLevel,
- this.number, this.contentDescription);
+ StatusBarIcon that = new StatusBarIcon(this.iconPackage, this.user, this.iconId,
+ this.iconLevel, this.number, this.contentDescription);
that.visible = this.visible;
return that;
}
@@ -60,6 +64,7 @@ public class StatusBarIcon implements Parcelable {
public void readFromParcel(Parcel in) {
this.iconPackage = in.readString();
+ this.user = (UserHandle) in.readParcelable(null);
this.iconId = in.readInt();
this.iconLevel = in.readInt();
this.visible = in.readInt() != 0;
@@ -69,6 +74,7 @@ public class StatusBarIcon implements Parcelable {
public void writeToParcel(Parcel out, int flags) {
out.writeString(this.iconPackage);
+ out.writeParcelable(this.user, 0);
out.writeInt(this.iconId);
out.writeInt(this.iconLevel);
out.writeInt(this.visible ? 1 : 0);
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 27684d72cb4c..48fe7fa40136 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -453,6 +453,9 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
char heapstartsizeOptsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX];
char heapsizeOptsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX];
char heapgrowthlimitOptsBuf[sizeof("-XX:HeapGrowthLimit=")-1 + PROPERTY_VALUE_MAX];
+ char heapminfreeOptsBuf[sizeof("-XX:HeapMinFree=")-1 + PROPERTY_VALUE_MAX];
+ char heapmaxfreeOptsBuf[sizeof("-XX:HeapMaxFree=")-1 + PROPERTY_VALUE_MAX];
+ char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
char extraOptsBuf[PROPERTY_VALUE_MAX];
char* stackTraceFile = NULL;
bool checkJni = false;
@@ -555,6 +558,27 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
mOptions.add(opt);
}
+ strcpy(heapminfreeOptsBuf, "-XX:HeapMinFree=");
+ property_get("dalvik.vm.heapminfree", heapminfreeOptsBuf+16, "");
+ if (heapminfreeOptsBuf[16] != '\0') {
+ opt.optionString = heapminfreeOptsBuf;
+ mOptions.add(opt);
+ }
+
+ strcpy(heapmaxfreeOptsBuf, "-XX:HeapMaxFree=");
+ property_get("dalvik.vm.heapmaxfree", heapmaxfreeOptsBuf+16, "");
+ if (heapmaxfreeOptsBuf[16] != '\0') {
+ opt.optionString = heapmaxfreeOptsBuf;
+ mOptions.add(opt);
+ }
+
+ strcpy(heaptargetutilizationOptsBuf, "-XX:HeapTargetUtilization=");
+ property_get("dalvik.vm.heaptargetutilization", heaptargetutilizationOptsBuf+26, "");
+ if (heapmaxfreeOptsBuf[26] != '\0') {
+ opt.optionString = heaptargetutilizationOptsBuf;
+ mOptions.add(opt);
+ }
+
/*
* Enable or disable dexopt features, such as bytecode verification and
* calculation of register maps for precise GC.
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index a3834acba2bb..1b71b4329649 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -822,6 +822,11 @@ static void android_view_GLES20Canvas_updateRenderLayer(JNIEnv* env, jobject cla
layer->updateDeferred(renderer, displayList, left, top, right, bottom);
}
+static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject clazz,
+ Layer* layer) {
+ layer->clearTexture();
+}
+
static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz,
Layer* layer, SkMatrix* matrix) {
@@ -1016,6 +1021,7 @@ static JNINativeMethod gMethods[] = {
{ "nUpdateTextureLayer", "(IIIZLandroid/graphics/SurfaceTexture;)V",
(void*) android_view_GLES20Canvas_updateTextureLayer },
{ "nUpdateRenderLayer", "(IIIIIII)V", (void*) android_view_GLES20Canvas_updateRenderLayer },
+ { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture },
{ "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer },
{ "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred },
{ "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer },
diff --git a/core/res/res/drawable/progress_horizontal_holo_dark.xml b/core/res/res/drawable/progress_horizontal_holo_dark.xml
index bc1ecf37ec4a..ff270b3cf7b9 100644
--- a/core/res/res/drawable/progress_horizontal_holo_dark.xml
+++ b/core/res/res/drawable/progress_horizontal_holo_dark.xml
@@ -21,13 +21,11 @@
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/progress_secondary_holo_dark" />
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/progress_primary_holo_dark" />
</item>
diff --git a/core/res/res/drawable/progress_horizontal_holo_light.xml b/core/res/res/drawable/progress_horizontal_holo_light.xml
index ee9b629fdfb5..493518553e67 100644
--- a/core/res/res/drawable/progress_horizontal_holo_light.xml
+++ b/core/res/res/drawable/progress_horizontal_holo_light.xml
@@ -21,13 +21,11 @@
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/progress_secondary_holo_light" />
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/progress_primary_holo_light" />
</item>
diff --git a/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml b/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml
index 4d831910233d..97cd5135c5be 100644
--- a/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml
+++ b/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml
@@ -19,12 +19,10 @@
android:drawable="@android:drawable/scrubber_track_holo_dark" />
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/scrubber_secondary_holo" />
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/scrubber_primary_holo" />
</item>
</layer-list>
diff --git a/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml b/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml
index a3461fab7787..14e19f432b7b 100644
--- a/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml
+++ b/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml
@@ -19,12 +19,10 @@
android:drawable="@android:drawable/scrubber_track_holo_light" />
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/scrubber_secondary_holo" />
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%"
- android:scaleGravity="start"
android:drawable="@android:drawable/scrubber_primary_holo" />
</item>
</layer-list>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 27f4ed496567..0bedb0338169 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Vereis dat gestoorde programdata geënkripteer word."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Deaktiveer kameras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Voorkom die gebruik van alle toestelkameras."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Deaktiveer kenmerke in \'keyguard\'"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Voorkom die gebruik van \'n paar kenmerke in \'keyguard\'."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Tuis"</item>
<item msgid="869923650527136615">"Mobiel"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Deel"</string>
<string name="find" msgid="4808270900322985960">"Vind"</string>
<string name="websearch" msgid="4337157977400211589">"Websoektog"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Soek volgende"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Vind vorige"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Liggingsversoek van <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Liggingsversoek"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Versoek deur <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index a6bc6dcedb37..be904f52951e 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -494,7 +494,7 @@
<string name="permlab_checkinProperties" msgid="7855259461268734914">"የድረስባህሪያት ምልከታ"</string>
<string name="permdesc_checkinProperties" msgid="4024526968630194128">"በገቢር ጀምር አገልግሎት ወደ ተሰቀሉት ባህሪያት አንብብ/ ፃፍ እንዲደርስ ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
<string name="permlab_bindGadget" msgid="776905339015863471">"ፍርግሞች ምረጥ"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"የትኛው መተግበሪያ በየትኛው ምግብሮች መጠቀም እንደሚቻል ለስርዓቱ ለመንገር ለመተግበሪያው ይፈቅዳሉ፡፡መተግበሪያ በዚህ ፍቃድ ሌሎች መተግበሪያዎች ከግል ውሂብ ለመዳረስ እንዲቻል ያስችላል፡፡ ለመደበኛ መተግበሪያዎች አጠቃቀም አይሆንም፡፡"</string>
+ <string name="permdesc_bindGadget" msgid="8261326938599049290">"የትኛው መተግበሪያ በየትኛው ፍርግሞች መጠቀም እንደሚቻል ለስርዓቱ ለመንገር ለመተግበሪያው ይፈቅዳሉ። መተግበሪያ በእዚህ ፍቃድ ሌሎች መተግበሪያዎች ከግል ውሂብ ለመዳረስ እንዲቻል ያስችላል። ለመደበኛ መተግበሪያዎች አጠቃቀም አይሆንም።"</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"የስልክ ሁኔታን ቀይር"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"የመገልገያ መሳሪያውን የስልክ ባህሪያት ለመቆጣጠር ለመተግበሪያው ይፈቅዳል፡፡ ከዚህ ፍቃድ ጋር መተግበሪያ አውታረ መረቦችን ሊለውጥ ይችላል፤አንተን ምንም ሳያሳውቅ የስልኩን ሬድዮ አብራ እና አጥፋ እና የመሳሰሉትን ሊያበራ ይችላል፡፡"</string>
<string name="permlab_readPhoneState" msgid="9178228524507610486">"የስልክ ሁኔታና ማንነት አንብብ"</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"የተከማቸ ትግበራ ውሂብ የተመሰጠረ እንዲሆን ጠይቅ።"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"ካሜራዎችን አቦዝን"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"የሁሉንም መሣሪያ ካሜራዎች መጠቀም ከልክል።"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"በቁልፍ ጠባቂ ውስጥ ባህሪያትን ያሰናክሉ"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"በቁልፍ ጠባቂ ውስጥ የአንዳንድ ባህሪያትን መጠቀም ያግዱ።"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"መነሻ"</item>
<item msgid="869923650527136615">"ተንቀሳቃሽ"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,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">"ስልኩ ከ<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; ቁጥራቸው ብዙ የሆኑ የኤስ.ኤም.ኤስ. መልዕክቶችን እየላከ ነው። ይሄ መተግበሪያ መልዕክቶችን መላኩን እንዲቀጥል መፍቀድ ትፈልጋለህ?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"አጋራ"</string>
<string name="find" msgid="4808270900322985960">"አግኝ"</string>
<string name="websearch" msgid="4337157977400211589">"ድረ ፍለጋ"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"ቀጣዩን አግኝ"</string>
+ <string name="find_previous" msgid="2196723669388360506">"ቀዳሚውን አግኝ"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"የስፍራ ጥየቃ ቅፅ<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"የስፍራ ጥየቃ"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">" በ፡<xliff:g id="NAME">%1$s</xliff:g>(<xliff:g id="SERVICE">%2$s</xliff:g>) ተጠየቀ"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 1245d53d59d1..7cf878765010 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"يمكنك طلب تشفير بيانات التطبيق المخزنة."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"تعطيل الكاميرات"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"يمكنك منح استخدام جميع كاميرات الجهاز."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"تعطيل الميزات في وضع حماية المفاتيح"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"يمكنك منع استخدام بعض الميزات في وضع حماية المفاتيح."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"الرئيسية"</item>
<item msgid="869923650527136615">"الجوال"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"مشاركة"</string>
<string name="find" msgid="4808270900322985960">"بحث"</string>
<string name="websearch" msgid="4337157977400211589">"بحث الويب"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"بحث عن التطابق التالي"</string>
+ <string name="find_previous" msgid="2196723669388360506">"بحث عن التطابق السابق"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"طلب الموقع من <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"طلب الموقع"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"مطلوب من <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 557263daa368..9c9f8b843293 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Запыт на шыфраванне захаваных дадзеных прыкладанняў."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Адключыць камеры"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Забараніць выкарыстанне ўсіх камер прылады."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Адключэнне функцыі блакiроўкi клавiятуры"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Прадухіленне выкарыстання некаторых функцый падчас блакiроўкi."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Галоўная старонка"</item>
<item msgid="869923650527136615">"Мабільны"</item>
@@ -1075,8 +1073,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">"Увайдзіце ў сетку Wi-Fi"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Немагчыма падключыцца да Wi-Fi"</string>
@@ -1094,8 +1091,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Каму:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Увядзіце патрэбны PIN-код:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-код"</string>
- <!-- 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>
@@ -1263,10 +1259,8 @@
<string name="share" msgid="1778686618230011964">"Адкрыць доступ"</string>
<string name="find" msgid="4808270900322985960">"Пошук"</string>
<string name="websearch" msgid="4337157977400211589">"Вэб-пошук"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Знайсці нiжэй"</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">"Запыт ад карыстальнiка <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 3cb175dd5e24..06de90b23905 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Изисква съхраняваните данни за приложенията да бъдат шифровани."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Деактивиране на камерите"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Предотвратява употребата на камерите на всички устройства."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Функции при защита на клавишите: Деакт."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Предотвратява използването на някои функции при защита на клавишите."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Домашен"</item>
<item msgid="869923650527136615">"Мобилен"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Споделяне"</string>
<string name="find" msgid="4808270900322985960">"Намиране"</string>
<string name="websearch" msgid="4337157977400211589">"Уеб търсене"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Търсене на следващото"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Търсене на предишното"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Заявка за местоположение от <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Заявка за местоположение"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Заявено от <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 5c51035e4886..0bfca009bea7 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -501,8 +501,8 @@
<string name="permdesc_readPhoneState" msgid="1639212771826125528">"Permet que l\'aplicació accedeixi a les funcions de telèfon del dispositiu. Aquest permís permet que l\'aplicació determini el número de telèfon i els identificadors del dispositiu, si hi ha una trucada activa i el número remot connectat amb una trucada."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"evita que la tauleta entri en mode d\'inactivitat"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir que el telèfon se suspengui"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Permet que l\'aplicació impedeixi que la tauleta entri en mode d\'inactivitat."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Permet que l\'aplicació impedeixi que el telèfon entri en mode d\'inactivitat."</string>
+ <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Permet que l\'aplicació impedeixi que la tauleta entri en repòs."</string>
+ <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Permet que l\'aplicació impedeixi que el telèfon entri en repòs."</string>
<string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"activa o desactiva la tauleta"</string>
<string name="permlab_devicePower" product="default" msgid="4928622470980943206">"engegar o apagar el telèfon"</string>
<string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"Permet que l\'aplicació encengui i apagui la tauleta."</string>
@@ -541,8 +541,8 @@
<string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Permet que l\'aplicació pugui canviar la configuració de xarxa i interceptar i inspeccionar tot el trànsit de la xarxa, per exemple, canviar el servidor intermediari i el port de qualsevol APN. Les aplicacions malicioses poden controlar, redireccionar o modificar paquets de la xarxa sense el teu coneixement."</string>
<string name="permlab_changeNetworkState" msgid="958884291454327309">"canviar la connectivitat de xarxa"</string>
<string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Permet que l\'aplicació pugui canviar l\'estat de connectivitat de la xarxa."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"Canvia la connectivitat de connexió compartida"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet a l\'aplicació canviar l\'estat de la connectivitat de les xarxes compartides."</string>
+ <string name="permlab_changeTetherState" msgid="5952584964373017960">"Canvia la connectivitat d\'ancoratge a xarxa"</string>
+ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet que l\'aplicació canviï l\'estat de la connectivitat de la xarxa d\'ancoratge."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"canviar la configuració d\'ús de dades de referència"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet que l\'aplicació canviï la configuració d\'ús de les dades de fons."</string>
<string name="permlab_accessWifiState" msgid="5202012949247040011">"visualització de les connexions Wi-Fi"</string>
@@ -605,28 +605,26 @@
<string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permet que l\'aplicació modifiqui la manera com es calcula l\'ús de la xarxa per part de les aplicacions. No indicat per a les aplicacions normals."</string>
<string name="policylab_limitPassword" msgid="4497420728857585791">"Defineix les normes de contrasenya"</string>
<string name="policydesc_limitPassword" msgid="3252114203919510394">"Controla la longitud i els caràcters permesos a les contrasenyes de desbloqueig de pantalla."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"Supervisa els intents de desbloqueig de la pantalla"</string>
+ <string name="policylab_watchLogin" msgid="914130646942199503">"Control d\'intents de desbloqueig de pantalla"</string>
<string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"Supervisa el nombre de contrasenyes incorrectes introduïdes per desbloquejar la pantalla i bloqueja la tauleta o n\'esborra totes les dades si s\'introdueixen massa contrasenyes incorrectes."</string>
<string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"Supervisa el nombre de contrasenyes incorrectes introduïdes en desbloquejar la pantalla, i bloqueja el telèfon o esborra totes les dades del telèfon si s\'introdueixen massa contrasenyes incorrectes."</string>
<string name="policylab_resetPassword" msgid="2620077191242688955">"Canvia la contrasenya de desbloqueig de pantalla"</string>
<string name="policydesc_resetPassword" msgid="605963962301904458">"Canvia la contrasenya de desbloqueig de pantalla."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"Bloqueja la pantalla"</string>
+ <string name="policylab_forceLock" msgid="2274085384704248431">"Bloqueig de pantalla"</string>
<string name="policydesc_forceLock" msgid="1141797588403827138">"Controla com i quan es bloqueja la pantalla."</string>
<string name="policylab_wipeData" msgid="3910545446758639713">"Esborra totes les dades"</string>
<string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Esborra les dades de la tauleta sense advertiment mitjançant un restabliment de les dades de fàbrica."</string>
<string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Esborra les dades del telèfon sense advertiment mitjançant un restabliment de les dades de fàbrica."</string>
<string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Defineix el servidor intermediari global del dispositiu"</string>
<string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Defineix el servidor intermediari global del dispositiu que cal utilitzar mentre la política estigui activada. Només el primer administrador del dispositiu pot definir el servidor intermediari global efectiu."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"Defineix la caducitat de la contrasenya de bloqueig de pantalla"</string>
+ <string name="policylab_expirePassword" msgid="885279151847254056">"Defineix caducitat de bloqueig de pantalla"</string>
<string name="policydesc_expirePassword" msgid="1729725226314691591">"Controla la freqüència amb què cal canviar la contrasenya de bloqueig de pantalla."</string>
<string name="policylab_encryptedStorage" msgid="8901326199909132915">"Encriptació d’emmagatzematge"</string>
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Requereix que les dades de l\'aplicació emmagatzemades estiguin encriptades."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Desactiva les càmeres"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Impedeix l\'ús de totes les càmeres del dispositiu."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Des. funcions en bloq. tecles"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Impedeix l\'ús d\'algunes funcions en bloqueig de tecles."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Casa"</item>
<item msgid="869923650527136615">"Mòbil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Xarxes Wi-fi obertes disponibles"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Inicia la sessió a la xarxa Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Inicia la sessió a la xarxa"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No s\'ha pogut connectar a la Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Per a:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Introdueix el PIN sol·licitat:"</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">"El telèfon es desconnectarà temporalment de la Wi-Fi mentre estigui connectat a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Insereix un caràcter"</string>
<string name="sms_control_title" msgid="7296612781128917719">"S\'estan enviant missatges SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; està enviant molts missatges SMS. Vols permetre que aquesta aplicació continuï enviant missatges?"</string>
@@ -1230,7 +1226,7 @@
<string name="submit" msgid="1602335572089911941">"Envia"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode de cotxe activat"</string>
<string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca per sortir del mode de cotxe."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"Ancoratge a la xarxa o punt de connexió actiu"</string>
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ancoratge a la xarxa o zona Wi-Fi activat"</string>
<string name="tethered_notification_message" msgid="6857031760103062982">"Toca per configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Enrere"</string>
<string name="next_button_label" msgid="1080555104677992408">"Següent"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Comparteix"</string>
<string name="find" msgid="4808270900322985960">"Cerca"</string>
<string name="websearch" msgid="4337157977400211589">"Cerca al web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Cerca el següent"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Cerca l\'anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Sol·licitud d\'ubicació de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Sol·licitud d\'ubicació"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Sol·licitat per <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index e644e8e8ec4e..2ad8153b9b6a 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Požadovat šifrování uložených dat aplikací."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Vypnout fotoaparáty"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Zakázat používání všech fotoaparátů zařízení."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Zakázat funkce v zámku zařízení"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Zabránit používání některých funkcí v zámku zařízení."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Domů"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Sdílet"</string>
<string name="find" msgid="4808270900322985960">"Najít"</string>
<string name="websearch" msgid="4337157977400211589">"Vyhledat na webu"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Najít další"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Najít předchozí"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Požadavek na informace o poloze od uživatele <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Požadavek na informace o poloze"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Požadavek od uživatele <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index ca81de0a1729..b5f7494dea37 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Kræver, at gemte appdata krypteres."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Deaktiver kameraer"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Bloker brug af alle kameraer på enheden."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Deaktiver tastaturlåsfunktioner"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Forbyd brugen af ​​visse tastaturlåsfunktioner."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Hjem"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Der er åbne Wi-Fi-netværk tilgængelige"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Log ind på Wi-Fi-netværket"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Log ind på netværk"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kunne ikke oprette forbindelse til Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Til:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Skriv den påkrævede pinkode:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Pinkode:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefonens Wi-Fi-forbindelse vil midlertidigt blive afbrudt, når den er tilsluttet <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Indsæt tegn"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Sender sms-beskeder"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sender et stort antal sms-beskeder. Vil du tillade, at denne app fortsat sender beskeder?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Del"</string>
<string name="find" msgid="4808270900322985960">"Find"</string>
<string name="websearch" msgid="4337157977400211589">"Websøgning"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Find næste"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Find forrige"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Placeringsanmodning fra <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Placeringsanmodning"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Anmodet om af <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 9a33c9df11e9..297536d42828 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Anforderung, dass gespeicherte App-Daten verschlüsselt werden"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Kameras deaktivieren"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Nutzung sämtlicher Gerätekameras unterbinden"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Funktionen in Keyguard deaktivieren"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Verhindert in Keyguard die Verwendung einiger Funktionen"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Privat"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1000,7 +998,7 @@
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Der Speicherplatz wird knapp"</string>
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Einige Systemfunktionen funktionieren möglicherweise nicht."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
- <string name="cancel" msgid="6442560571259935130">"Abbruch"</string>
+ <string name="cancel" msgid="6442560571259935130">"Abbrechen"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
<string name="no" msgid="5141531044935541497">"Abbrechen"</string>
<string name="dialog_alert_title" msgid="2049658708609043103">"Achtung"</string>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Verfügbare WLAN-Netzwerke öffnen"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Im WLAN-Netzwerk anmelden"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Im Netzwerk anmelden"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Es konnte keine WLAN-Verbindung hergestellt werden."</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"An:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Geben Sie die erforderliche PIN ein:"</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">"Das Telefon wird vorübergehend vom WLAN getrennt, während eine Verbindung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> hergestellt wird."</string>
<string name="select_character" msgid="3365550120617701745">"Zeichen einfügen"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Kurznachrichten werden gesendet"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sendet eine große Anzahl SMS. Möchten Sie zulassen, dass die App weiterhin Nachrichten sendet?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Teilen"</string>
<string name="find" msgid="4808270900322985960">"Suchen"</string>
<string name="websearch" msgid="4337157977400211589">"Websuche"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Weitersuchen"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Aufwärts weitersuchen"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Standortabfrage von <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Standortabfrage"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Angefordert von <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index f565001de679..260719951d5d 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Να απαιτείται η κρυπτογράφηση των αποθηκευμένων δεδομένων εφαρμογής"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Απενεργοποίηση φωτογρ. μηχανών"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Να αποτρέπεται η χρήση των φωτογραφικών μηχανών της συσκευής."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Απενεργοποίηση λειτουργιών στο κλείδωμα πληκτρολογίου"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Αποφυγή της χρήσης ορισμένων λειτουργιών στο κλείδωμα πληκτρολογίου."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Οικία"</item>
<item msgid="869923650527136615">"Κινητό"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Προς:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Πληκτρολογήστε τον απαιτούμενο κωδικό PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Κοινή χρ."</string>
<string name="find" msgid="4808270900322985960">"Εύρεση"</string>
<string name="websearch" msgid="4337157977400211589">"Αναζήτηση ιστού"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Εύρεση επόμενου"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Εύρεση προηγούμενου"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Αίτημα τοποθεσίας από <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Αίτημα τοποθεσίας"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Ζητήθηκε από <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index f61ccf0e2537..6269ef34abab 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -438,10 +438,10 @@
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Allows the app to use SurfaceFlinger low-level features."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"read frame buffer"</string>
<string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Allows the app to read the content of the frame buffer."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"configure Wifi displays"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Allows the app to configure and connect to Wifi displays."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"control Wifi displays"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Allows the app to control low-level features of Wifi displays."</string>
+ <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"configure Wi-Fi displays"</string>
+ <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Allows the app to configure and connect to Wi-Fi displays."</string>
+ <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"control Wi-Fi displays"</string>
+ <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Allows the app to control low-level features of Wi-Fi displays."</string>
<string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="3876049771427466323">"record audio"</string>
@@ -545,9 +545,9 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Allows the app to change the state of tethered network connectivity."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"change background data usage setting"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Allows the app to change the background data usage setting."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"view WiFi connections"</string>
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"view Wi-Fi connections"</string>
<string name="permdesc_accessWifiState" msgid="5002798077387803726">"Allows the app to view information about Wi-FI networking, such as whether Wi-FI is enabled and name of connected Wi-FI devices."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"connect and disconnect from WiFi"</string>
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"connect and disconnect from Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7137950297386127533">"Allows the app to connect to and disconnect from Wi-FI access points and to make changes to device configuration for Wi-FI networks."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"allow Wi-Fi Multicast reception"</string>
<string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Allows the app to receive packets sent to all devices on a Wi-FI network using multicast addresses, not just your tablet. It uses more power than the non-multicast mode."</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Require that stored app data be encrypted."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Disable cameras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Prevent use of all device cameras."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Disable features in keyguard"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Prevent use of some features in keyguard."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Home"</item>
<item msgid="869923650527136615">"Mobile"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Open Wi-Fi networks available"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Sign in to Wi-Fi network"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Sign in to network"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"To:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Type the required 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">"The phone will temporarily disconnect from Wi-FI while it\'s connected to <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Insert character"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Sending SMS messages"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; is sending a large number of SMS messages. Do you want to allow this app to continue sending messages?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Share"</string>
<string name="find" msgid="4808270900322985960">"Find"</string>
<string name="websearch" msgid="4337157977400211589">"Web Search"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Find next"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Find previous"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Location request from <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Location request"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Requested by <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 3e9e81885914..cff81eae2a32 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -623,10 +623,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>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <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-array name="phoneTypes">
<item msgid="8901098336658710359">"Casa"</item>
<item msgid="869923650527136615">"Móvil"</item>
@@ -765,7 +763,7 @@
<string name="lockscreen_charged" msgid="4938930459620989972">"Cargado."</string>
<string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="lockscreen_low_battery" msgid="1482873981919249740">"Conecta tu cargador."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No hay ninguna tarjeta SIM."</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No hay tarjeta SIM."</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No hay tarjeta SIM en el tablet."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No hay tarjeta SIM en el dispositivo."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Abrir redes disponibles de Wi-Fi"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Accede a una red Wi-Fi."</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Acceder a la red"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se pudo conectar a la red Wi-Fi."</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Para:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Escribe el PIN solicitado:"</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">"El teléfono se desconectará temporalmente del sistema Wi-Fi mientras esté conectado a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="select_character" msgid="3365550120617701745">"Insertar caracteres"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensajes SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; está enviando una gran cantidad de mensajes SMS. ¿Quieres permitir que está aplicación siga enviando mensajes?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Compartir"</string>
<string name="find" msgid="4808270900322985960">"Buscar"</string>
<string name="websearch" msgid="4337157977400211589">"Buscar en la Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Buscar siguiente"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Buscar anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Solicitud de ubicación de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Solicitud de ubicación"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Solicitado por <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 514bcce76943..adb40a82f82d 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -623,10 +623,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">"Inhabilitar cámaras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Evitar el uso de las cámaras del dispositivo"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Inhabilitar funciones en bloqueo"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Evita el uso de algunas funciones durante el bloqueo."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Casa"</item>
<item msgid="869923650527136615">"Móvil"</item>
@@ -765,7 +763,7 @@
<string name="lockscreen_charged" msgid="4938930459620989972">"Cargado"</string>
<string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="lockscreen_low_battery" msgid="1482873981919249740">"Conecta el cargador"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Falta la tarjeta SIM"</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Falta la tarjeta SIM."</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No se ha insertado ninguna tarjeta SIM en el tablet."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No se ha insertado ninguna tarjeta SIM en el teléfono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Redes Wi-Fi abiertas disponibles"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Iniciar sesión en red Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Iniciar sesión en la red"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se ha podido establecer conexión con la red Wi-Fi."</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Para:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Escribe el PIN solicitado:"</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">"El teléfono se desconectará temporalmente de la red Wi-Fi mientras está conectado a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="select_character" msgid="3365550120617701745">"Insertar carácter"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensajes SMS..."</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; está enviando un gran número de mensajes SMS. ¿Quieres permitir que está aplicación siga enviando mensajes?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Compartir"</string>
<string name="find" msgid="4808270900322985960">"Buscar"</string>
<string name="websearch" msgid="4337157977400211589">"Búsqueda web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Buscar siguiente"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Buscar anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Solicitud de ubicación de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Solicitud de ubicación"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Solicitud enviada por <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 1ba37080879c..e379eac2ef39 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -310,8 +310,8 @@
<string name="permlab_setAlwaysFinish" msgid="550958507798796965">"sundige taustarakendused sulguma"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Võimaldab rakendusel määrata, kas tegevused lõpetatakse kohe, kui need liiguvad taustale. Tavarakenduste puhul pole seda vaja."</string>
<string name="permlab_batteryStats" msgid="2789610673514103364">"aku statistika lugemine"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Lubab rakendusel lugeda praeguse madala akutaseme kasutusandmeid. Võib lubada rakendusel hankida üksikasjalikku teavet selle kohta, mis rakendusi te kasutate."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"muuda aku statistikat"</string>
+ <string name="permdesc_batteryStats" msgid="5897346582882915114">"Lubab rakendusel lugeda madala akutaseme kasutusandmeid. Võib lubada rakendusel hankida üksikasjalikku teavet selle kohta, mis rakendusi te kasutate."</string>
+ <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"aku statistika muutmine"</string>
<string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Võimaldab rakendusel muuta aku kohta kogutud statistikat. Mitte kasutada tavarakenduste puhul."</string>
<string name="permlab_backup" msgid="470013022865453920">"juhi süsteemi varundust ja taastet"</string>
<string name="permdesc_backup" msgid="6912230525140589891">"Võimaldab rakendusel juhtida süsteemi varundus- ja taastemehhanismi. Mitte kasutada tavarakenduste puhul."</string>
@@ -368,8 +368,8 @@
<string name="permlab_installPackages" msgid="2199128482820306924">"Rakenduste otse installimine"</string>
<string name="permdesc_installPackages" msgid="5628530972548071284">"Võimaldab rakendusel installida uusi või värskendatud Android-pakette. Pahatahtlikud rakendused võivad selle abil lisada uusi meelevaldse tegevuse lubadega rakendusi."</string>
<string name="permlab_clearAppCache" msgid="7487279391723526815">"Kõigi rakenduse vahemäluandmete kustutamine"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Lubab rakendusel vabastada tahvelarvuti mäluruumi, kustutades failid teiste rakenduste vahemälu kataloogides. Selle tagajärjel võivad teised rakenduse käivituda aeglasemalt, sest need peavad oma andmed uuesti tooma."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Lubab rakendusel vabastada telefoni mäluruumi, kustutades failid teiste rakenduste vahemälu kataloogides. Selle tagajärjel võivad teised rakenduse käivituda aeglasemalt, sest need peavad oma andmed uuesti tooma."</string>
+ <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Lubab rakendusel vabastada tahvelarvuti mäluruumi, kustutades faile teiste rakenduste vahemälu kataloogides. Selle tagajärjel võivad teised rakendused käivituda aeglasemalt, sest need peavad oma andmed uuesti tooma."</string>
+ <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Lubab rakendusel vabastada telefoni mäluruumi, kustutades faile teiste rakenduste vahemälu kataloogides. Selle tagajärjel võivad teised rakendused käivituda aeglasemalt, sest need peavad oma andmed uuesti tooma."</string>
<string name="permlab_movePackage" msgid="3289890271645921411">"Rakenduse ressursside teisaldamine"</string>
<string name="permdesc_movePackage" msgid="319562217778244524">"Võimaldab rakendusel teisalda rakenduseressursid sisemiselt kandjalt välisele ja vastupidi."</string>
<string name="permlab_readLogs" msgid="6615778543198967614">"tundlike logiandmete lugemine"</string>
@@ -431,9 +431,9 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"luba asukohapakkuja installimiseks"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Looge võltsasukoha allikaid, et katsetada või installida uut asukohapakkujat. See lubab rakendusel tühistada teiste asukohaallikate, näiteks GPS-i või asukohapakkujate tagastatud asukoha ja/või oleku."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"täpne asukoht (GPS- ja võrgupõhine)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Lubab rakendusel hankida teie täpse asukoha globaalse positsioneerimissüsteemi (GPS) või võrgu asukoha allikate (nt mobiilimastide ja WiFi) järgi. Need asukohateenused peavad olema sisse lülitatud ja teie seadme jaoks saadaval, et rakendus saaks neid kasutada. Rakendused võivad kasutada seda teie asukoha tuvastamiseks ja tarbida akut."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Lubab rakendusel hankida teie täpse asukoha globaalse positsioneerimissüsteemi (GPS) või võrgu asukohaallikate (nt mobiilimastide ja WiFi) järgi. Need asukohateenused peavad olema sisse lülitatud ja teie seadme jaoks saadaval, et rakendus saaks neid kasutada. Rakendused võivad kasutada seda teie asukoha tuvastamiseks ja tarbida akut."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ligikaudne asukoht (võrgupõhine)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Lubab rakendusel hankida juurdepääs ligikaudsele asukohale. Asukoht tuletatakse asukohateenuste järgi, kasutades võrgu asukoha allikaid, nagu mobiilimastid ja WiFi. Need asukohateenused peavad olema sisse lülitatud ja teie seadme jaoks saadaval, et rakendus saaks neid kasutada. Rakendused võivad kasutada seda teie ligikaudse asukoha tuvastamiseks."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Lubab rakendusel hankida juurdepääsu ligikaudsele asukohale. Asukoht tuletatakse asukohateenuste järgi, kasutades võrgu asukohaallikaid, nt mobiilimastid ja WiFi. Need asukohateenused peavad olema sisse lülitatud ja teie seadme jaoks saadaval, et rakendus saaks neid kasutada. Rakendused võivad kasutada seda teie ligikaudse asukoha tuvastamiseks."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"juurdepääs SurfaceFlingerile"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Võimaldab rakendusel kasutada SurfaceFlingeri madalatasemelisi funktsioone."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"loe kaadripuhvrit"</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Nõua salvestatud rakenduse andmete krüpteerimist."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Keela kaamerad"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Vältige seadme kõigi kaamerate kasutamist."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Klahviluku funkts. keelamine"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Takistage klahviluku mõne funktsiooni kasutamist."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Kodu"</item>
<item msgid="869923650527136615">"Mobiil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Avatud WiFi-võrgud on saadaval"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Logige sisse WiFi-võrku"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Logige võrku"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ei saanud WiFi-ga ühendust"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Saaja:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Sisestage nõutav PIN-kood:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-kood:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefoni ühendus WiFi-ga katkestatakse ajutiselt, kui see on ühendatud seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Sisesta tähemärk"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS-sõnumite saatmine"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; saadab suurel hulgal SMS-sõnumeid. Kas tahate lubada sellel rakendusel ka edaspidi sõnumeid saata?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Jaga"</string>
<string name="find" msgid="4808270900322985960">"Otsi"</string>
<string name="websearch" msgid="4337157977400211589">"Veebiotsing"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Leia järgmine"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Leia eelmine"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Asukohapäring kasutajalt <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Asukohapäring"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Taotleja: <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index dac52562b799..51fc6ca3ec10 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"باید اطلاعات ذخیره شده برنامه رمزگذاری شود."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"غیر فعال کردن دوربین ها"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"از استفاده از تمام دوربین‎های دستگاه جلوگیری کنید."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"غیرفعال کردن ویژگی‌‌ها در محافظ کلید"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"از استفاده از برخی ویژگی‌ها در محافظ کلید جلوگیری شود."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"خانه"</item>
<item msgid="869923650527136615">"تلفن همراه"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,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">"ارسال پیامک ها"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; در حال ارسال تعداد زیادی پیامک است. آیا اجازه می‌دهید این برنامه همچنان پیامک ارسال کند؟"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"اشتراک‌گذاری"</string>
<string name="find" msgid="4808270900322985960">"یافتن"</string>
<string name="websearch" msgid="4337157977400211589">"جستجوی وب"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"یافتن بعدی"</string>
+ <string name="find_previous" msgid="2196723669388360506">"یافتن قبلی"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"درخواست موقعیت مکانی از <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"درخواست موقعیت مکانی"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"درخواست شده توسط <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index c7ef211baa15..bc472b1e62a6 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Pakota tallennettujen sovellustietojen salaus."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Poista kamerat käytöstä"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Estä laitteen kaikkien kameroiden käyttö."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Poista omin. käyt. näppäinluk."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Estä joidenkin ominaisuuksien käyttö näppäinlukolla."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Puhelinnumero (koti)"</item>
<item msgid="869923650527136615">"Mobiili"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Avoimia wifi-verkkoja käytettävissä"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Kirjaudu wifi-verkkoon"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Kirjaudu verkkoon"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wifi-yhteyden muodostaminen epäonnistui"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kohde:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Kirjoita pyydetty PIN-koodi:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-koodi:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Puhelimen yhteys wifi-verkkoon katkaistaan väliaikaisesti puhelimen ollessa yhdistettynä laitteeseen <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Lisää merkki"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Tekstiviestien lähettäminen"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; lähettää suuria määriä tekstiviestejä. Annetaanko tämän sovelluksen jatkaa tekstiviestien lähettämistä?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Jaa"</string>
<string name="find" msgid="4808270900322985960">"Etsi"</string>
<string name="websearch" msgid="4337157977400211589">"Verkkohaku"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Hae seuraava"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Hae edellinen"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Sijaintipyyntö käyttäjältä <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Sijaintipyyntö"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Pyytänyt <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index c3ae5d8816a4..a824281441d4 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Exiger le chiffrement des données d\'application stockées"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Désactiver les appareils photo"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Empêcher l\'utilisation de tous les appareils photos"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Désact. fonct. si protec. clav."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Empêcher l\'utilisation de certaines fonctionnalités lorsque la protection du clavier est activée"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Domicile"</item>
<item msgid="869923650527136615">"Mobile"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Réseaux Wi-Fi ouverts disponibles"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Connectez-vous au réseau Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Se connecter au réseau"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossible de se connecter au Wi-Fi."</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"À :"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Saisissez le code PIN requis :"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Code PIN :"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Le téléphone sera déconnecté du réseau Wi-Fi tant qu\'il sera connecté à l\'appareil <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="select_character" msgid="3365550120617701745">"Insérer un caractère"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Envoi de messages SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envoie un grand nombre de SMS. Autorisez-vous cette application à poursuivre l\'envoi des messages ?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Partager"</string>
<string name="find" msgid="4808270900322985960">"Rechercher"</string>
<string name="websearch" msgid="4337157977400211589">"Recherche Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Rechercher suivant"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Rechercher précédent"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Demande de position de la part de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Demande de position"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Demande de <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 95e6943a1bb9..bb5765445371 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"संग्रहीत एप्‍लिकेशन डेटा को एन्क्रिप्ट किया जाना आवश्‍यक है."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"कैमरों को अक्षम करें"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"सभी उपकरण कैमरों का उपयोग रोकें."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"कीगार्ड में सुविधाएं अक्षम करें"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"कीगार्ड में कुछ सुविधाओं का उपयोग रोकें."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"घर"</item>
<item msgid="869923650527136615">"मोबाइल"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,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">"फ़ोन <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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"शेयर करें"</string>
<string name="find" msgid="4808270900322985960">"ढूंढें"</string>
<string name="websearch" msgid="4337157977400211589">"वेब खोज"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"अगला ढूंढें"</string>
+ <string name="find_previous" msgid="2196723669388360506">"पिछला ढूंढें"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> की ओर से स्‍थान अनुरोध"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"स्‍थान अनुरोध"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) द्वारा अनुरोधित"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 1bc54de480c2..22707664640e 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Zahtijevajte da pohranjeni podaci aplikacije budu šifrirani."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Onemogući fotoaparate"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Spriječite upotrebu svih kamera uređaja."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Onemogući zaštitu tipkovnice"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Sprječava se upotreba nekih značajki u zaštitnom zaključavanju tipkovnice."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Početna"</item>
<item msgid="869923650527136615">"Mobilni"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Omogućavanje otvaranja Wi-Fi mreža"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Prijavite se na Wi-Fi mrežu"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Prijavite se na mrežu"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ne može se spojiti na Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Prima:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Upišite potreban 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 će se privremeno isključiti s Wi-Fija dok je povezan s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Umetni znak"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Slanje SMS poruka"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Aplikacija &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; šalje veliki broj SMS poruka. Želite li dopustiti ovoj aplikaciji da nastavi slati poruke?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Dijeli"</string>
<string name="find" msgid="4808270900322985960">"Pronađi"</string>
<string name="websearch" msgid="4337157977400211589">"Pretraž. weba"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Nađi sljedeće"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Nađi prethodno"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Zahtjev za lokaciju koji upućuje <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Zahtjev za lokaciju"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Zatražio <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 9c042f1f8c52..c36c10e0f1fa 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Megköveteli a tárolt alkalmazásadatok titkosítását."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Kamerák letiltása"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Az összes eszközkamera használatának megakadályozása."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Funkciók letiltása billentyűzár esetén."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Bizonyos funkciók használatának megakadályozása billentyűzár esetén."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Otthoni"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Nyílt Wi-Fi hálózatok elérhetők"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Bejelentkezés Wi-Fi hálózatba"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Bejelentkezés a hálózatba"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nem sikerült csatlakozni a Wi-Fi hálózathoz"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Címzett:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Adja meg a szükséges PIN kódot:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN kód:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"A telefon ideiglenesen kilép a Wi-Fi hálózatról, míg a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközhöz csatlakozik."</string>
<string name="select_character" msgid="3365550120617701745">"Karakter beszúrása"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS-ek küldése"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/ b&gt; nagyszámú SMS üzenetet küld. Engedélyezi, hogy ez az alkalmazás továbbra is üzeneteket küldjön?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Megosztás"</string>
<string name="find" msgid="4808270900322985960">"Keresés"</string>
<string name="websearch" msgid="4337157977400211589">"Webes keresés"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Következő keresése"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Előző keresése"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Helykérelem a következőtől: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Helykérelem"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Igénylő <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index c32d8ba48bc4..7204b0416d3f 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -623,10 +623,8 @@
<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>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Menonaktifkan ftur 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>
<item msgid="869923650527136615">"Seluler"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Jaringan Wi-Fi terbuka tersedia"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Masuk ke jaringan Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Masuk ke jaringan"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak dapat tersambung ke Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kepada:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Ketik PIN yang diminta:"</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">"Ponsel akan terputus sementara dari Wi-Fi saat tersambung ke <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Sisipkan huruf"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Mengirim pesan 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 mengirim pesan SMS dalam jumlah besar. Izinkan aplikasi ini untuk melanjutkan pengiriman pesan?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Bagikan"</string>
<string name="find" msgid="4808270900322985960">"Temukan"</string>
<string name="websearch" msgid="4337157977400211589">"Penelusuran Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Cari berikutnya"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Cari sebelumnya"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Permintaan lokasi dari <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Permintaan lokasi"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Diminta oleh <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 9c198f75b4ff..ffcd0e36be6f 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Richiede la crittografia dei dati applicazione memorizzati."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Disattiva fotocamere"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Impedisci l\'utilizzo di tutte le fotocamere del dispositivo."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Disattiva le funzioni con il blocco tastiera"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Impedisce l\'utilizzo di alcune funzioni con il blocco tastiera."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Casa"</item>
<item msgid="869923650527136615">"Cellulare"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Reti Wi-Fi aperte disponibili"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Accedi a rete Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Accedi alla rete"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossibile connettersi alla rete Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"A:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Inserisci il PIN richiesto:"</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">"Il telefono verrà momentaneamente scollegato dalla rete Wi-Fi durante il collegamento a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="select_character" msgid="3365550120617701745">"Inserisci carattere"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Invio SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sta inviando molti SMS. Vuoi consentire all\'applicazione di continuare a inviare messaggi?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Condividi"</string>
<string name="find" msgid="4808270900322985960">"Trova"</string>
<string name="websearch" msgid="4337157977400211589">"Ricerca Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Trova successivo"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Trova precedente"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Richiesta posizione da <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Richiesta posizione"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Richiesto da <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index ac2cb9cefd9b..b318243dac0f 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"דרוש שנתוני יישומים מאוחסנים יהיו מוצפנים."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"השבת מצלמות"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"מנע שימוש בכל המצלמות שבמכשיר."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"השבת תכונות ב-Keyguard"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"מנע שימוש בתכונות מסוימות ב-Keyguard."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"בית"</item>
<item msgid="869923650527136615">"נייד"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"אל:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"הקלד את קוד ה-PIN הנדרש."</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"שתף"</string>
<string name="find" msgid="4808270900322985960">"מצא"</string>
<string name="websearch" msgid="4337157977400211589">"חיפוש באינטרנט"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"חפש את הבא"</string>
+ <string name="find_previous" msgid="2196723669388360506">"חפש את הקודם"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"בקשת מיקום מאת <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"בקשת מיקום"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"מבוקש על ידי <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index b1a2c2864586..190eb977cce5 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"保存したアプリデータが暗号化されるようにします。"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"カメラを無効にする"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"すべての端末カメラを使用できないようにします。"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"キーガードの機能を無効にする"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"キーガードの一部の機能の使用を禁止します。"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"自宅"</item>
<item msgid="869923650527136615">"携帯"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"共有"</string>
<string name="find" msgid="4808270900322985960">"検索"</string>
<string name="websearch" msgid="4337157977400211589">"ウェブ検索"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"次を検索"</string>
+ <string name="find_previous" msgid="2196723669388360506">"前を検索"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>さんからの現在地情報リクエスト"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"現在地情報へのアクセス許可"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g>さん(<xliff:g id="SERVICE">%2$s</xliff:g>)からのリクエスト"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 97600e121815..e91bda5bf778 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"저장한 애플리케이션 데이터를 암호화해야 합니다."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"카메라 사용 안함"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"모든 기기 카메라의 사용 차단"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"키가드에서 기능 사용중지"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"키가드에서 일부 기능의 사용을 차단합니다."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"집"</item>
<item msgid="869923650527136615">"모바일"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"받는사람:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"필수 PIN 입력:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"공유"</string>
<string name="find" msgid="4808270900322985960">"찾기"</string>
<string name="websearch" msgid="4337157977400211589">"웹 검색"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"다음 항목 찾기"</string>
+ <string name="find_previous" msgid="2196723669388360506">"이전 항목 찾기"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>의 위치 요청"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"위치 요청"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"요청한 사람: <xliff:g id="NAME">%1$s</xliff:g>(<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 42e57a1f0b4b..9a53ab27d779 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Reikalauti, kad saugomos programos duomenys būtų šifruoti."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Neleisti fotoaparatų"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Neleisti naudoti visų įrenginio fotoaparatų."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Funkcijų išjung. klaviat. aps."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Naudojant klaviatūros apsaugos funkciją, neleisti naudoti kai kurių funkcijų."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Pagrindinis"</item>
<item msgid="869923650527136615">"Mobilusis"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Atidaryti galimus „Wi-Fi“ tinklus"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Prisijungti prie „Wi-Fi“ ryšio tinklo"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Prisijungti prie tinklo"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepavyko prisijungti prie „Wi-Fi“"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Skirta:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Įveskite reikiamą PIN kodą:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN kodas:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Telefonas bus laikinai atjungtas nuo „Wi-Fi“, kol bus prijungtas prie „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“"</string>
<string name="select_character" msgid="3365550120617701745">"Įterpti simbolį"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS pranešimų siuntimas"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Naudojant &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; siunčiama daug SMS pranešimų. Ar norite leisti šiai programai toliau siųsti pranešimus?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Bendrinti"</string>
<string name="find" msgid="4808270900322985960">"Ieškoti"</string>
<string name="websearch" msgid="4337157977400211589">"Žiniat. paieška"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Rasti kitą"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Rasti ankstesnį"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Vietos užklausa iš <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Vietos užklausa"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Užklausą pateikė <xliff:g id="NAME">%1$s</xliff:g> („<xliff:g id="SERVICE">%2$s</xliff:g>“)"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index f6e066ca610c..e68d952558d1 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Pieprasa, lai saglabātie lietotnes dati tiktu šifrēti."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Atspējot kameras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Neļauj izmantot nevienu ierīces kameru."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Bloķēšanas f-jas atspējošana"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Atspējot noteiktas funkcijas taustiņslēgā."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Mājas"</item>
<item msgid="869923650527136615">"Mobilais"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Ir pieejami atvērti Wi-Fi tīkli."</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Pierakstieties Wi-Fi tīklā."</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Pierakstīšanās tīklā"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nevarēja izveidot savienojumu ar Wi-Fi."</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kam:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Ierakstiet pieprasīto 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">"Tālrunis tiks īslaicīgi atvienots no Wi-Fi tīkla, kamēr būs izveidots savienojums ar ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="select_character" msgid="3365550120617701745">"Ievietojiet rakstzīmi"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Īsziņu sūtīšana"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Lietotne &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sūta daudz īsziņu. Vai vēlaties, lai šī lietotne turpinātu sūtīt ziņojumus?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Kopīgot"</string>
<string name="find" msgid="4808270900322985960">"Atrast"</string>
<string name="websearch" msgid="4337157977400211589">"Meklēt tīmeklī"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Atrast nākamo"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Atrast iepriekšējo"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Atrašanās vietas pieprasījums no: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Atrašanās vietas pieprasījums"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Pieprasīja: <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 11e3e7bffae1..47e0e1ce9cde 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -309,14 +309,10 @@
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Membenarkan apl untuk mengawal bilangan maksimum proses yang akan berlangsung. Tidak sekali-kali diperlukan untuk apl biasa."</string>
<string name="permlab_setAlwaysFinish" msgid="550958507798796965">"memaksa apl latar belakang untuk menutup"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Membenarkan apl untuk mengawal sama ada aktiviti sentiasa selesai sebaik sahaja ia pergi ke latar belakang. Tidak sekali-kali diperlukan untuk apl biasa."</string>
- <!-- no translation found for permlab_batteryStats (2789610673514103364) -->
- <skip />
- <!-- no translation found for permdesc_batteryStats (5897346582882915114) -->
- <skip />
- <!-- no translation found for permlab_updateBatteryStats (3719689764536379557) -->
- <skip />
- <!-- no translation found for permdesc_updateBatteryStats (6862817857178025002) -->
- <skip />
+ <string name="permlab_batteryStats" msgid="2789610673514103364">"baca statistik bateri"</string>
+ <string name="permdesc_batteryStats" msgid="5897346582882915114">"Membenarkan aplikasi membaca data penggunaan bateri tahap rendah semasa. Boleh membenarkan aplikasi untuk mencari maklumat terperinci tentang apl yang anda gunakan."</string>
+ <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"ubah suai statistik bateri"</string>
+ <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Membenarkan apl mengubah suai statistik bateri yang dikumpul. Bukan untuk penggunaan apl normal."</string>
<string name="permlab_backup" msgid="470013022865453920">"sandaran dan pemulihan sistem kawalan"</string>
<string name="permdesc_backup" msgid="6912230525140589891">"Membenarkan apl untuk mengawal sandaran sistem dan memulihkan mekanisme. Bukan untuk digunakan oleh apl biasa."</string>
<string name="permlab_confirm_full_backup" msgid="5557071325804469102">"sahkan penyandaran penuh atau pemulihan operasi"</string>
@@ -324,8 +320,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"memapaparkan tetingkap yang tiada kebenaran"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Membenarkan apl untuk membuat tetingkap yang dimaksudkan untuk digunakan oleh antara muka pengguna sistem dalaman. Bukan untuk digunakan oleh apl biasa."</string>
<string name="permlab_systemAlertWindow" msgid="3543347980839518613">"lukis atas apl lain"</string>
- <!-- no translation found for permdesc_systemAlertWindow (8584678381972820118) -->
- <skip />
+ <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Membenarkan aplikasi bertindih di atas aplikasi lain atau sebahagian daripada antara muka pengguna. Ia mungkin mengganggu penggunaan antara muk anda dalam sebarang aplikasi atau menukar apa yang anda rasa anda lihat dalam aplikasi lain."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"mengubah suai kelajuan animasi global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Membenarkan apl menukar kelajuan animasi global (animasi yang lebih laju atau lebih perlahan) pada bila-bila masa sahaja."</string>
<string name="permlab_manageAppTokens" msgid="1286505717050121370">"urus token apl"</string>
@@ -373,10 +368,8 @@
<string name="permlab_installPackages" msgid="2199128482820306924">"pasang terus apl"</string>
<string name="permdesc_installPackages" msgid="5628530972548071284">"Membenarkan apl untuk memasang pakej Android yang baharu atau yang dikemas kini. Apl hasad boleh menggunakannya untuk menambah apl baharu dengan keizinan berkuasa secara sewenang-wenangnya."</string>
<string name="permlab_clearAppCache" msgid="7487279391723526815">"padamkan semua data cache apl"</string>
- <!-- no translation found for permdesc_clearAppCache (8974640871945434565) -->
- <skip />
- <!-- no translation found for permdesc_clearAppCache (2459441021956436779) -->
- <skip />
+ <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Membenarkan apl mengosongkan storan tablet dengan memadam fail dalam direktori cache aplikasi lain. Ini boleh menyebabkan aplikasi lain bermula lebih perlahan kerana perlu mendapatkan semula datanya."</string>
+ <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Membenarkan apl mengosongkan storan telefon dengan memadam fail dalam direktori cache aplikasi lain. Ini boleh menyebabkan aplikasi lain bermula lebih perlahan kerana perlu mendapatkan semula datanya."</string>
<string name="permlab_movePackage" msgid="3289890271645921411">"Alih sumber apl"</string>
<string name="permdesc_movePackage" msgid="319562217778244524">"Membenarkan apl untuk memindahkan sumber apl dari media dalaman ke luaran dan sebaliknya."</string>
<string name="permlab_readLogs" msgid="6615778543198967614">"baca data log sensitif"</string>
@@ -437,14 +430,10 @@
<string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Membenarkan apl untuk mengakses arahan pembekal lokasi tambahan. Ini boleh membenarkan apl untuk campur tangan dengan operasi GPS atau sumber lokasi lain."</string>
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"kebenaran untuk memasang pembekal lokasi"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Buat sumber lokasi palsu untuk menguji atau memasang pembekal lokasi baharu. Ini membenarkan apl untuk membatalkan lokasi dan/atau status yang dikembalikan oleh sumber lokasi lain seperti GPS atau pembekal lokasi."</string>
- <!-- no translation found for permlab_accessFineLocation (1191898061965273372) -->
- <skip />
- <!-- no translation found for permdesc_accessFineLocation (5295047563564981250) -->
- <skip />
- <!-- no translation found for permlab_accessCoarseLocation (4887895362354239628) -->
- <skip />
- <!-- no translation found for permdesc_accessCoarseLocation (2538200184373302295) -->
- <skip />
+ <string name="permlab_accessFineLocation" msgid="1191898061965273372">"lokasi tepat (GPS dan berasaskan rangkaian)"</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Membenarkan apl mendapatkan lokasi tepat anda menggunakan Sistem Kedudukan Global (GPS) atau sumber lokasi rangkaian seperti menara sel dan Wi-Fi. Perkhidmatan lokasi ini mesti dihidupkan dan tersedia pada peranti anda untuk kegunaan apl. Apl boleh menggunakan ini untuk menentukan tempat anda berada dan mungkin menggunakan kuasa bateri tambahan."</string>
+ <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"lokasi anggaran (berasaskan rangkaian)"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Membenarkan apl mendapatkan lokasi anggaran anda. Lokasi ini diperolehi oleh perkhidmatan lokasi menggunakan sumber lokasi rangkaian seperti menara sel dan Wi-Fi. Perkhidmatan lokasi ini mesti dihidupkan dan tersedia pada peranti anda untuk kegunaan apl. Apl boleh menggunakan ini untuk menentukan secara anggaran tempat anda berada."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"akses SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Membenarkan apl menggunakan ciri peringkat rendah SurfaceFlinger."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"baca penimbal bingkai"</string>
@@ -566,8 +555,7 @@
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"akses tetapan Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Membenarkan apl mengkonfigurasikan tablet Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Membenarkan apl mengkonfigurasikan telefon Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string>
- <!-- no translation found for permlab_accessWimaxState (4195907010610205703) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="4195907010610205703">"sambung dan nyahsambung dari WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Membenarkan apl menentukan sama ada WiMaX didayakan dan maklumat tentang sebarang rangkaian WiMaX yang disambungkan."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Tukar keadaan WiMAX"</string>
<string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Membenarkan apl untuk menyambungkan tablet ke dan menyahsambungkan tablet dari rangkaian WiMaX."</string>
@@ -591,8 +579,7 @@
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Membenarkan apl untuk mengubah suai suapan segerakan semasa anda. Apl hasad boleh menukar suapan anda yang disegerakkan."</string>
<string name="permlab_readDictionary" msgid="4107101525746035718">"baca istilah yang anda tambahkan kepada kamus"</string>
<string name="permdesc_readDictionary" msgid="659614600338904243">"Membenarkan apl membaca semua perkataan, nama dan frasa yang mungkin telah disimpan oleh pengguna dalam kamus pengguna."</string>
- <!-- no translation found for permlab_writeDictionary (2183110402314441106) -->
- <skip />
+ <string name="permlab_writeDictionary" msgid="2183110402314441106">"tambah perkataan ke kamus ditakrifkan pengguna"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Membenarkan apl menulis perkataan baharu ke dalam kamus pengguna."</string>
<string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"uji akses ke storan dilindungi"</string>
<string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"uji akses ke storan dilindungi"</string>
@@ -636,10 +623,8 @@
<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>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Lumpuhkan ciri dalam 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>
<item msgid="869923650527136615">"Mudah alih"</item>
@@ -1113,22 +1098,14 @@
<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>
<string name="sms_control_yes" msgid="3663725993855816807">"Benarkan"</string>
<string name="sms_control_no" msgid="625438561395534982">"Nafikan"</string>
- <!-- no translation found for sms_short_code_confirm_message (1645436466285310855) -->
- <skip />
- <!-- no translation found for sms_short_code_details (4992814738863678373) -->
- <skip />
- <!-- no translation found for sms_premium_short_code_details (4291752905667807485) -->
- <skip />
- <!-- no translation found for sms_short_code_confirm_allow (4458878637111023413) -->
- <skip />
- <!-- no translation found for sms_short_code_confirm_deny (2927389840209170706) -->
- <skip />
- <!-- no translation found for sms_short_code_remember_choice (5289538592272218136) -->
- <skip />
- <!-- no translation found for sms_short_code_confirm_always_allow (3241181154869493368) -->
- <skip />
- <!-- no translation found for sms_short_code_confirm_never_allow (446992765774269673) -->
- <skip />
+ <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ingin menghantar mesej kepada &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
+ <string name="sms_short_code_details" msgid="4992814738863678373">"Ini akan menyebabkan bayaran dikenakan kepada akaun mudah alih anda."</string>
+ <string name="sms_premium_short_code_details" msgid="4291752905667807485">"Ini akan menyebabkan bayaran dikenakan kepada akaun mudah alih anda."</string>
+ <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Hantar"</string>
+ <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Batal"</string>
+ <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Ingat pilihan saya"</string>
+ <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"Sentiasa Benarkan"</string>
+ <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"Jangan Benarkan"</string>
<string name="sim_removed_title" msgid="6227712319223226185">"Kad SIM dikeluarkan"</string>
<string name="sim_removed_message" msgid="2333164559970958645">"Rangkaian mudah alih tidak akan tersedia sehingga anda mula semula dengan kad SIM yang sah dimasukkan."</string>
<string name="sim_done_button" msgid="827949989369963775">"Selesai"</string>
@@ -1142,8 +1119,7 @@
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"BAHARU: "</font></string>
<string name="perms_description_app" msgid="5139836143293299417">"Disediakan oleh <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="no_permissions" msgid="7283357728219338112">"Tiada kebenaran diperlukan"</string>
- <!-- no translation found for perm_costs_money (4902470324142151116) -->
- <skip />
+ <string name="perm_costs_money" msgid="4902470324142151116">"anda mungkin dikenakan bayaran"</string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Storan massa USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"sambungan USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Anda bersambung ke komputer melalui USB. Sentuh butang di bawah jika anda mahu menyalin fail antara komputer dan storan USB Android anda."</string>
@@ -1284,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Kongsi"</string>
<string name="find" msgid="4808270900322985960">"Dapatkan"</string>
<string name="websearch" msgid="4337157977400211589">"Carian Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Cari seterusnya"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Cari sebelumnya"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Permintaan lokasi daripada <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Permintaan lokasi"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Diminta oleh <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1433,7 +1407,6 @@
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Anda telah mencuba untuk membuka kunci telefon secara salah sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Telefon kini akan ditetapkan semula ke tetapan lalai kilang."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah tersilap melukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci tablet anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah tersilap lukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci telefon anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
- <!-- no translation found for safe_media_volume_warning (7382971871993371648) -->
- <skip />
+ <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>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index faa424e3aa90..9f34e8305796 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -555,7 +555,7 @@
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"endrer Bluetooth-innstillinger"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Lar appen konfigurere det lokale Bluetooth-nettbrettet, samt oppdage og koble sammen med eksterne enheter."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Lar appen konfigurere den lokale Bluetooth-telefonen, samt oppdage og koble sammen med eksterne enheter."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"tilkobling til og frakobling fra WiMAX"</string>
+ <string name="permlab_accessWimaxState" msgid="4195907010610205703">"koble til eller fra WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Lar appen avgjøre hvorvidt WiMAX er aktivert og finne informasjon om eventuelle tilkoblede WiMAX-nettverk."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Endre WiMAX-status"</string>
<string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Lar appen koble nettbrettet til og fra WiMAX-nettverk."</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Krev at lagrede appdata krypteres."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Deaktiver kameraer"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Hindre bruk av alle kameraer på enheten."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Deaktiv. funksj. i tastelås"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Forhindre bruk av enkelte funksjoner når tastelåsen er på."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Hjemmenummer"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Åpne trådløsnett i nærheten"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Pålogging til Wi-Fi-nettverk"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Logg deg på nettverket"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan ikke koble til Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Til:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Skriv inn påkrevd PIN-kode:"</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">"Telefonen frakobles Wi-Fi midlertidig mens den er tilkoblet <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Sett inn tegn"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Sender SMS-meldinger"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sender et stort antall SMS. Vil du la appen fortsette å sende ut meldinger?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Del"</string>
<string name="find" msgid="4808270900322985960">"Finn"</string>
<string name="websearch" msgid="4337157977400211589">"Nettsøk"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Finn neste"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Finn forrige"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Posisjonsforespørsel fra <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Posisjonsforespørsel"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Forespurt av <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 74c3c47b1c66..46729606b070 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Vereisen dat opgeslagen appgegevens kunnen worden gecodeerd."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Camera\'s uitschakelen"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Het gebruik van alle apparaatcamera\'s voorkomen."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Functies uit in toetsblokk."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Gebruik van bepaalde functies voorkomen in toetsblokkering."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Thuis"</item>
<item msgid="869923650527136615">"Mobiel"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Open Wi-Fi-netwerken beschikbaar"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Aanmelden bij wifi-netwerk"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Aanmelden bij netwerk"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan geen verbinding maken met Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Naar:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Voer de gewenste pincode in:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Pincode"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"De verbinding met het wifi-netwerk wordt tijdelijk uitgeschakeld terwijl de telefoon is verbonden met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Teken invoegen"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS-berichten verzenden"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; verzendt moment een groot aantal sms-berichten. Wilt u toestaan ​​dat deze app berichten blijft verzenden?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Delen"</string>
<string name="find" msgid="4808270900322985960">"Vinden"</string>
<string name="websearch" msgid="4337157977400211589">"Online zoeken"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Volgende zoeken"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Vorige zoeken"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Locatieverzoek van <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Locatieverzoek"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Aangevraagd door <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 32c34bc9cbb8..6895a702afa5 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Wymaganie szyfrowania przechowywanych danych aplikacji"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Wyłącz aparaty"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Zapobieganie używaniu wszystkich aparatów w urządzeniu"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Wyłącz funkcje w blokadzie"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Zablokuj używanie niektórych funkcji w blokadzie."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Dom"</item>
<item msgid="869923650527136615">"Komórka"</item>
@@ -1075,8 +1073,7 @@
<item quantity="other" msgid="7915895323644292768">"Otwórz dostępne sieci Wi-Fi"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Zaloguj się do sieci Wi-Fi."</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Zaloguj się do sieci"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nie można połączyć się z siecią Wi-Fi."</string>
@@ -1094,8 +1091,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Do:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Wpisz wymagany kod PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Kod PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Na czas połączenia z <xliff:g id="DEVICE_NAME">%1$s</xliff:g> telefon zostanie tymczasowo odłączony od Wi-Fi"</string>
<string name="select_character" msgid="3365550120617701745">"Wstaw znak"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Wysyłanie wiadomości SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; wysyła wiele SMS-ów. Chcesz pozwolić tej aplikacji dalej wysyłać SMS-y?"</string>
@@ -1263,10 +1259,8 @@
<string name="share" msgid="1778686618230011964">"Udostępnij"</string>
<string name="find" msgid="4808270900322985960">"Znajdź"</string>
<string name="websearch" msgid="4337157977400211589">"Wyszukiwarka"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Znajdź następne"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Znajdź poprzednie"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Prośba o lokalizację od użytkownika <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Prośba o lokalizację"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Żądane przez <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1383,7 +1377,7 @@
<string name="kg_wrong_password" msgid="2333281762128113157">"Nieprawidłowe hasło"</string>
<string name="kg_wrong_pin" msgid="1131306510833563801">"Nieprawidłowy PIN"</string>
<string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Spróbuj ponownie za <xliff:g id="NUMBER">%d</xliff:g> s."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Narysuj swój wzór"</string>
+ <string name="kg_pattern_instructions" msgid="398978611683075868">"Narysuj wzór"</string>
<string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Podaj PIN karty SIM"</string>
<string name="kg_pin_instructions" msgid="2377242233495111557">"Podaj PIN"</string>
<string name="kg_password_instructions" msgid="5753646556186936819">"Wpisz hasło"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 82e8283ff42f..2fef6df1524f 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Solicitar encriptação dos dados da aplicação armazenados."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Desativar câmaras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Evitar a utilização de todas as câmaras do aparelho."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Desat. func. com teclado bloq."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Evitar a utilização de algumas funcionalidades com o teclado bloqueado."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Residência"</item>
<item msgid="869923650527136615">"Móvel"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Abrir redes Wi-Fi disponíveis"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Iniciar sessão na rede Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Inicie sessão na 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 ligar a Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Para:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Introduza o PIN solicitado:"</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 telemóvel irá desligar-se temporariamente da rede Wi-Fi enquanto está ligado a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Introduzir carácter"</string>
<string name="sms_control_title" msgid="7296612781128917719">"A enviar 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; está a enviar um grande número de mensagens SMS. Pretende autorizar que a aplicação continue a enviar mensagens?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Partilhar"</string>
<string name="find" msgid="4808270900322985960">"Localizar"</string>
<string name="websearch" msgid="4337157977400211589">"Pesquisar na Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Localizar seguinte"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Localizar anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Pedido de localização de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Pedido de localização"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Pedido por <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index e2bc0bd1fd58..cade007e98c5 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Exija que os dados armazenados do aplicativo sejam criptografados."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Desativar câmeras"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Impeça o uso de todas as câmeras do dispositivo."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Desat. recursos ao bloq. tecl."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Impede o uso de determinados recursos quando o teclado está bloqueado."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Residencial"</item>
<item msgid="869923650527136615">"Celular"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Compartilhar"</string>
<string name="find" msgid="4808270900322985960">"Localizar"</string>
<string name="websearch" msgid="4337157977400211589">"Pesquisa na web do Google"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Localizar próximo"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Localizar anterior"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Solicitação de local de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Solicitação de local"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Solicitado por <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 88650eef74ab..81c304ebe390 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -623,10 +623,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>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <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-array name="phoneTypes">
<item msgid="8901098336658710359">"Domiciliu"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1262,10 +1260,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>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <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="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>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index a6672bb7d8ad..b26880be3f79 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Шифровать данные приложений в хранилище."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Отключить камеры"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Запретить использование камер на устройстве."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Отключить функции блокировки"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Запретить использование некоторых функций блокировки клавиатуры."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Домашний"</item>
<item msgid="869923650527136615">"Мобильный"</item>
@@ -788,10 +786,10 @@
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали PIN-код. "\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки планшетного ПК потребуется войти в аккаунт Google. "\n\n" Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки телефона потребуется войти в аккаунт Google. "\n\n" Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Не удалось разблокировать планшетный ПК (число попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого будут установлены настройки по умолчанию, что приведет к удалению всех пользовательских данных."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Не удалось разблокировать телефон (число попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого будут установлены настройки по умолчанию, что приведет к удалению всех пользовательских данных."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Не удалось разблокировать планшетный ПК (число попыток: <xliff:g id="NUMBER">%d</xliff:g>). Будут установлены настройки по умолчанию."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Не удалось разблокировать телефон (число попыток: <xliff:g id="NUMBER">%d</xliff:g>). Будут установлены настройки по умолчанию."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать планшетный ПК. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать телефон. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать планшетный ПК. Будут восстановлены заводские настройки."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать телефон. Будут восстановлены заводские настройки."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"Повторите попытку через <xliff:g id="NUMBER">%d</xliff:g> с."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Забыли графический ключ?"</string>
<string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Снятие блокировки аккаунта"</string>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Кому:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Введите PIN-код:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-код:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Отправить"</string>
<string name="find" msgid="4808270900322985960">"Найти"</string>
<string name="websearch" msgid="4337157977400211589">"Веб-поиск"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Найти след."</string>
+ <string name="find_previous" msgid="2196723669388360506">"Найти пред."</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Пользователь <xliff:g id="NAME">%s</xliff:g> запрашивает ваше местоположение"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Запрос местоположения"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Запрашивает <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1402,15 +1396,15 @@
<string name="kg_login_invalid_input" msgid="5754664119319872197">"Неверное имя пользователя или пароль."</string>
<string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Забыли имя пользователя или пароль?"\n"Перейдите на страницу "<b>"google.com/accounts/recovery"</b>"."</string>
<string name="kg_login_checking_password" msgid="8849589033659332457">"Проверка…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Не удалось разблокировать устройство с помощью PIN-кода (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). "\n\n"Повторите попытку через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Не удалось разблокировать устройство с помощью пароля (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>)."\n\n"Повторите попытку через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Не удалось разблокировать устройство с помощью графического ключа (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>)."\n\n"Повторите попытку через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Не удалось разблокировать планшетный ПК (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого будут установлены настройки по умолчанию, что приведет к удалению всех пользовательских данных."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Не удалось разблокировать телефон (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого будут установлены настройки по умолчанию, что приведет к удалению всех пользовательских данных."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Не удалось разблокировать планшетный ПК (число неудачных попыток: <xliff:g id="NUMBER">%d</xliff:g>). Будут установлены настройки по умолчанию."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Не удалось разблокировать телефон (число неудачных попыток: <xliff:g id="NUMBER">%d</xliff:g>). Будут установлены настройки по умолчанию."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Не удалось разблокировать планшетный ПК с помощью графического ключа (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого вам будет предложено разблокировать устройство с помощью аккаунта электронной почты."\n\n"Повторите попытку через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Не удалось разблокировать телефон с помощью графического ключа (число неудачных попыток: <xliff:g id="NUMBER_0">%d</xliff:g>). Осталось попыток: <xliff:g id="NUMBER_1">%d</xliff:g>. После этого вам будет предложено разблокировать устройство с помощью аккаунта электронной почты."\n\n"Повторите попытку через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string>
+ <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали PIN-код. "\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
+ <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали пароль."\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ."\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать планшетный ПК. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать телефон. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать планшетный ПК. Будут восстановлены заводские настройки."</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать телефон. Будут восстановлены заводские настройки."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки планшетного ПК потребуется войти в аккаунт 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>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index add5674a8069..4d8cc6db782a 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -623,10 +623,8 @@
<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>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Zakáz. 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>
<item msgid="869923650527136615">"Mobil"</item>
@@ -765,7 +763,7 @@
<string name="lockscreen_charged" msgid="4938930459620989972">"Nabité."</string>
<string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="lockscreen_low_battery" msgid="1482873981919249740">"Pripojte nabíjačku."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nie je vložená karta SIM."</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nie je vložená karta SIM"</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tablete nie je žiadna karta SIM."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefóne nie je žiadna karta SIM."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte kartu SIM."</string>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Zdieľať"</string>
<string name="find" msgid="4808270900322985960">"Nájsť"</string>
<string name="websearch" msgid="4337157977400211589">"Hľadať na webe"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Nájsť ďalšiu"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Nájsť predchádzajúcu"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Žiadosť o informácie o polohe od používateľa <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Žiadosť o informácie o polohe"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Žiadosť od používateľa <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 58e315d1349e..d6c6581e39b4 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -310,7 +310,7 @@
<string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vsiljeno zapiranje aplikacij v ozadju"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Programu omogoča, da nadzoruje, ali so dejavnosti zaključene takoj, ko so premaknjene v ozadje. Tega ni treba nikoli uporabiti za navadne programe."</string>
<string name="permlab_batteryStats" msgid="2789610673514103364">"branje statističnih podatkov o akumulatorju"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Aplikaciji omogoča branje podatkov o trenutni nizki napolnjenosti akumulatorja. Aplikaciji lahko tudi dovoli dostop do podrobnosti o aplikacijah, ki jih uporabljate."</string>
+ <string name="permdesc_batteryStats" msgid="5897346582882915114">"Aplikaciji omogoča branje podatkov o trenutni nizki napolnjenosti akumulatorja. Aplikaciji lahko tudi dovoli dostop do podrobnosti o tem, katere aplikacije uporabljate."</string>
<string name="permlab_updateBatteryStats" msgid="3719689764536379557">"spreminjanje statističnih podatkov o akumulatorju"</string>
<string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Aplikaciji omogoča spreminjanje zbranih statističnih podatkov o akumulatorju. Ni primerno za uporabo z običajnimi aplikacijami."</string>
<string name="permlab_backup" msgid="470013022865453920">"nadzor varnostnega kopiranja sistema in obnovitev"</string>
@@ -368,7 +368,7 @@
<string name="permlab_installPackages" msgid="2199128482820306924">"neposredno nameščanje programov"</string>
<string name="permdesc_installPackages" msgid="5628530972548071284">"Programu omogoča namestitev novih ali posodobljenih paketov sistema Android. Zlonamerni programi lahko to uporabijo za dodajanje novih programov s poljubnimi zmogljivimi dovoljenji."</string>
<string name="permlab_clearAppCache" msgid="7487279391723526815">"brisanje vseh podatkov predpomnilnika programa"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Aplikaciji omogoča sproščanje pomnilnika v tabličnem računalniku, tako da izbrišite imenike predpomnilnika drugih aplikacij. To lahko povzroči počasnejši zagon drugih aplikacij, saj morajo znova prenesti svoje podatke."</string>
+ <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Aplikaciji omogoča sproščanje pomnilnika v tabličnem računalniku, tako da izbriše imenike predpomnilnika drugih aplikacij. To lahko povzroči počasnejši zagon drugih aplikacij, saj morajo znova prenesti svoje podatke."</string>
<string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Aplikaciji omogoča sproščanje pomnilnika telefona, tako da izbriše datoteke v imenikih predpomnilnika drugih aplikacij. To lahko povzroči počasnejši zagon drugih aplikacij, saj morajo znova prenesti svoje podatke."</string>
<string name="permlab_movePackage" msgid="3289890271645921411">"premikanje sredstev programa"</string>
<string name="permdesc_movePackage" msgid="319562217778244524">"Programu omogoča premikanje sredstev programa iz notranjih medijev v zunanje in obratno."</string>
@@ -431,9 +431,9 @@
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"dovoljenje za namestitev ponudnika lokacije"</string>
<string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Ustvarjanje simuliranih virov lokacije za preverjanje ali namestitev novega ponudnika lokacije. S tem lahko aplikacija preglasi lokacijo in/ali stanje, ki ga vrnejo drugi viri lokacije, kot so GPS in ponudniki lokacij."</string>
<string name="permlab_accessFineLocation" msgid="1191898061965273372">"natančna lokacija (na podlagi podatkov GPS in omrežja)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Aplikaciji omogoča, da določi vašo natančno lokacijo na podlagi sistema GPS ali omrežnih lokacijskih virov, kot so bazne postaje ali Wi-Fi. Te lokacijske storitve morajo biti vklopljene in na voljo v napravi, če želite, da jih aplikacija uporablja. Aplikacije lahko na podlagi tega določijo vašo lokacijo in še dodatno izpraznijo akumulator."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Aplikaciji omogoča, da določi vašo natančno lokacijo na podlagi sistema GPS ali omrežnih lokacijskih virov, kot so bazne postaje mobilne telefonije ali Wi-Fi. Te lokacijske storitve morajo biti vklopljene in na voljo v napravi, če želite, da jih aplikacija uporablja. Aplikacije lahko na podlagi tega določijo vašo lokacijo in še dodatno izpraznijo akumulator."</string>
<string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"približna lokacija (na podlagi omrežja)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Aplikaciji omogoča, da določi vašo približno lokacijo na podlagi lokacijskih storitev z omrežnimi lokacijskimi viri, kot so bazne postaje in Wi-Fi. Te lokacijske storitve morajo biti vklopljene in na voljo v napravi, če želite, da jih aplikacija uporablja. Aplikacije lahko na podlagi tega določijo vašo približno lokacijo."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Aplikaciji omogoča, da določi vašo približno lokacijo na podlagi lokacijskih storitev z omrežnimi lokacijskimi viri, kot so bazne postaje mobilne telefonije in Wi-Fi. Te lokacijske storitve morajo biti vklopljene in na voljo v napravi, če želite, da jih aplikacija uporablja. Aplikacije lahko na podlagi tega določijo vašo približno lokacijo."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"dostop do storitve SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Programu omogoča uporabo funkcij nizke ravni SurfaceFlinger."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"branje grafičnega/slikovnega medpomnilnika"</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Shranjeni podatki programa morajo biti šifrirani."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Onemogoči fotoaparate"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Prepreči uporabo vseh fotoaparatov v napravi."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Onemogočanje funkcij tipkov."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Preprečitev uporabe nekaterih funkcij tipkovnice."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Začetna stran"</item>
<item msgid="869923650527136615">"Mobilni"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Odpiranje razpoložljivih brezžičnih omrežij"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Prijava v omrežje Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Prijava v omrežje"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Z omrežjem Wi-Fi se ni mogoče povezati"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Za:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Vnesite zahtevano kodo 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 bo začasno prekinil povezavo z Wi-Fi-jem, ko je povezan z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Vstavljanje znaka"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Pošiljanje sporočil SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pošilja veliko SMS-ov. Ali želite dovoliti, da jih še naprej pošilja?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Deli z dr."</string>
<string name="find" msgid="4808270900322985960">"Najdi"</string>
<string name="websearch" msgid="4337157977400211589">"Spletno iskanje"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Najdi naslednje"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Najdi prejšnje"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Zahteva za lokacijo uporabnika <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Zahteva za lokacijo"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Zahtevala oseba <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
@@ -1411,6 +1405,6 @@
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefon ste poskusili <xliff:g id="NUMBER">%d</xliff:g>-krat napačno odkleniti, zato bo ponastavljen na privzete tovarniške nastavitve."</string>
<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 oslabi sluh."</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>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index bc82eee1ef1f..a66a14b34416 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Захтева да сачувани подаци апликације буду шифровани."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Онемогућавање камера"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Спречите коришћење свих камера уређаја."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Онемогућавање функција закључавања тастатуре."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Спречавање неких функција закључавања тастатуре."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Кућа"</item>
<item msgid="869923650527136615">"Мобилни"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Коме:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Унесите потребни PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Дели"</string>
<string name="find" msgid="4808270900322985960">"Пронађи"</string>
<string name="websearch" msgid="4337157977400211589">"Веб претрага"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Пронађи следеће"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Пронађи претходно"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Захтев за локацију од корисника <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Захтев за локацију"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Захтева <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index dff25c25a8ac..b656b960797b 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Kräv att sparade appdata krypteras."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Inaktivera kameror"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Förhindra att enhetens kameror används."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Inaktivera vid knapplås"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Förhindra användning av vissa funktioner vid knapplås."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Hem"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Öppna Wi-Fi-nätverk är tillgängliga"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Logga in på Wi-Fi-nätverk"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Logga in på nätverket"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Det gick inte att ansluta till Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Till:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Ange den obligatoriska PIN-koden:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-kod:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Mobilen kommer tillfälligt att kopplas från Wi-Fi när den är ansluten till <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Infoga tecken"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Skickar SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; skickar ett stort antal SMS. Vill du tillåta att appen fortsätter att skicka meddelanden?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Dela"</string>
<string name="find" msgid="4808270900322985960">"Sök efter"</string>
<string name="websearch" msgid="4337157977400211589">"Webbsökning"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Sök nästa"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Sök föregående"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Positionsförfrågan från <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Positionsförfrågan"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Begärt av <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 2faceaedc1ce..475d71980af1 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Inahitaji kwamba data ya programu iliyohifadhiwa iwe na msimbo fiche."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Lemaza kamera"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Zuia matumizi yote ya kamera za kifaa."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Lemaza vipengele kwenye kilinzi cha kitufe."</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Inazuia matumizi ya baadhi ya vipengele kwenye kilinzi cha kitufe."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Nyumbani"</item>
<item msgid="869923650527136615">"Simu ya mkononi"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Fungua mitandao ya Wi-Fi inayopatikana"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Ingia kwenye mtandao wa Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Ingia kwenye mtandao"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Haikuweza kuunganisha kwa Mtandao-Hewa"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kwa:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Charaza PIN inayohitajika:"</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">"Simu itaukata muunganisho kwa muda kutoka kwenye Wi-Fi inapokuwa imeunganishwa kwenye <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Ingiza kibambo"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Inatuma ujumbe wa SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; inatuma idadi kubwa ya jumbe za SMS. Je, unataka kuruhusu programu hii kuendelea kutuma jumbe?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Shiriki"</string>
<string name="find" msgid="4808270900322985960">"Tafuta"</string>
<string name="websearch" msgid="4337157977400211589">"Utafutaji Wavuti"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Pata ifuatayo"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Pata iliyotangulia"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Ombi la mahali kutoka <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Ombi la mahali"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Imeombwa na <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index d00e5a10f9a7..f90c509052c5 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"ข้อมูลของแอปพลิเคชันที่จัดเก็บต้องมีการเข้ารหัส"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"ปิดใช้งานกล้องถ่ายรูป"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"ป้องกันการใช้กล้องถ่ายรูปของอุปกรณ์ทั้งหมด"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"ปิดใช้งานคุณลักษณะการล็อกปุ่ม"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"ป้องกันการใช้คุณลักษณะบางส่วนในการล็อกปุ่ม"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"บ้าน"</item>
<item msgid="869923650527136615">"มือถือ"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"เปิดเครือข่าย Wi-Fi ที่ใช้งานได้"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"ลงชื่อเข้าใช้เครือข่าย WiFi"</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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"ถึง:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"พิมพ์ PIN ที่ต้องการ:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"แบ่งปัน"</string>
<string name="find" msgid="4808270900322985960">"ค้นหา"</string>
<string name="websearch" msgid="4337157977400211589">"ค้นเว็บ"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"ค้นหาถัดไป"</string>
+ <string name="find_previous" msgid="2196723669388360506">"ค้นหาก่อนหน้านี้"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"คำขอสถานที่จาก <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"คำขอสถานที่"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"ร้องขอโดย <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index b7d887dda8fc..9bef861172c1 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Hilinging naka-encrypt ang nakaimbak na data ng app."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Huwag paganahin mga camera"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Pigilan ang paggamit sa lahat ng camera ng device."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Wag paganahin tampok keyguard"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Pigilan ang paggamit ng ilang tampok sa keyguard."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Home"</item>
<item msgid="869923650527136615">"Mobile"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Buksan ang mga available na Wi-Fi network"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Mag-sign in sa network ng Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Mag-sign in sa network"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Hindi makakonekta sa Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Kay:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"I-type ang kinakailangang 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">"Pansamantalang madidiskoneta ang telepono sa Wi-Fi habang nakakonekta ito sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Magpasok ng character"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Nagpapadala ng mga SMS na mensahe"</string>
<string name="sms_control_message" msgid="3867899169651496433">"Ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ay nagpapadala ng maraming mensaheng SMS. Gusto mo bang payagan ang app na ito na magpatuloy sa pagpapadala ng mga mensahe?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Ibahagi"</string>
<string name="find" msgid="4808270900322985960">"Hanapin"</string>
<string name="websearch" msgid="4337157977400211589">"Paghahanap sa Web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Hanapin ang susunod"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Hanapin ang nakaraan"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Kahilingan sa lokasyon mula kay <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Kahilingan sa Lokasyon"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Hiniling ni <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 1eecfd449cb5..09a1805c5ef6 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Depolanan uygulama verilerinin şifrelenmiş olmasını zorunlu kılma."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Kameraları devre dışı bırak"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Tüm cihaz kameralarının kullanımını engelleme."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Keyguard\'daki özellikleri devre dışı bırak"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Keyguard\'daki bazı özelliklerin kullanılmasını önle."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Ev"</item>
<item msgid="869923650527136615">"Mobil"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Paylaş"</string>
<string name="find" msgid="4808270900322985960">"Bul"</string>
<string name="websearch" msgid="4337157977400211589">"Google Web Arama"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Sonrakini bul"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Öncekini bul"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> kullanıcısından gelen konum isteği"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Konum isteği"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> tarafından istendi (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index a43ab0adbcfe..f9222fcfa751 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Вимагати шифрування даних збереженої програми."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Вимкнути камери"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Запобігати використанню всіх камер пристрою."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Вимикати функції на клавіатурі"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Запобігає використанню деяких функцій на клавіатурі."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Дом."</item>
<item msgid="869923650527136615">"Мобільний"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Кому:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Введіть потрібний PIN-код:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-код:"</string>
- <!-- 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>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Надіслати"</string>
<string name="find" msgid="4808270900322985960">"Знайти"</string>
<string name="websearch" msgid="4337157977400211589">"Веб-пошук"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Знайти наступне"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Знайти попереднє"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Запит про місцезнаходження від користувача <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Запит про місцезнаходження"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Запит зроблено користувачем <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 31248baa0a97..8ab267471a93 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Yêu cầu dữ liệu ứng dụng được lưu trữ phải được mã hóa."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Vô hiệu hóa máy ảnh"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Ngăn sử dụng tất cả máy ảnh của thiết bị."</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Tắt tính năng trong chế độ bảo vệ phím"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Ngăn sử dụng một số tính năng trong chế độ bảo vệ phím."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Nhà riêng"</item>
<item msgid="869923650527136615">"ĐT di động"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"Mở mạng Wi-Fi khả dụng"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"Đăng nhập vào mạng Wi-Fi"</string>
- <!-- no translation found for network_available_sign_in (8495155593358054676) -->
- <skip />
+ <string name="network_available_sign_in" msgid="8495155593358054676">"Đăng nhập vào mạng"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Không thể kết nối với Wi-Fi"</string>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"Người nhận:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Nhập PIN bắt buộc:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"Mã PIN:"</string>
- <!-- no translation found for wifi_p2p_frequency_conflict_message (7363907213787469151) -->
- <skip />
+ <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Điện thoại sẽ tạm thời ngắt kết nối khỏi Wi-Fi trong khi điện thoại được kết nối với <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="select_character" msgid="3365550120617701745">"Chèn ký tự"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Đang gửi tin nhắn SMS"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; đang gửi rất nhiều tin nhắn SMS. Bạn có muốn cho phép ứng dụng này tiếp tục gửi tin nhắn không?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"Chia sẻ"</string>
<string name="find" msgid="4808270900322985960">"Tìm"</string>
<string name="websearch" msgid="4337157977400211589">"Tìm kiếm trên web"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <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="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>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 542ee3e39fc5..1ecddbd59cdd 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"要求对存储的应用数据进行加密。"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"停用相机"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"禁止使用所有设备摄像头。"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"锁屏时禁用某些功能"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"锁屏时禁止使用某些功能。"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"住宅"</item>
<item msgid="869923650527136615">"手机"</item>
@@ -1074,8 +1072,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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"收件人:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"键入所需的 PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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">"正在发送短信"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;在发送大量短信。是否允许该应用继续发送短信?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"分享"</string>
<string name="find" msgid="4808270900322985960">"查找"</string>
<string name="websearch" msgid="4337157977400211589">"网页搜索"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"查找下一个"</string>
+ <string name="find_previous" msgid="2196723669388360506">"查找上一个"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"来自<xliff:g id="NAME">%s</xliff:g>的定位请求"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"定位请求"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"请求人:<xliff:g id="NAME">%1$s</xliff:g>(<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 8eb25e8ba256..5d29f4dfb16d 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"必須為儲存的應用程式資料加密。"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"停用相機"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"禁止使用所有裝置相機。"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"停用鍵盤保護框上的功能"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"禁止使用鍵盤保護框上的部分功能。"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"住家電話"</item>
<item msgid="869923650527136615">"行動電話"</item>
@@ -1074,8 +1072,7 @@
<item quantity="other" msgid="7915895323644292768">"開啟可用 Wi-Fi 網路"</item>
</plurals>
<string name="wifi_available_sign_in" msgid="4029489716605255386">"登入 WiFi 網路"</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>
@@ -1093,8 +1090,7 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"收件者:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"請輸入必要的 PIN:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <!-- 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> 連線期間將暫時中斷 WiFi 連線"</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;&lt;/b&gt;「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在傳送大量簡訊。您要允許這個應用程式繼續傳送簡訊嗎?"</string>
@@ -1262,10 +1258,8 @@
<string name="share" msgid="1778686618230011964">"分享"</string>
<string name="find" msgid="4808270900322985960">"尋找"</string>
<string name="websearch" msgid="4337157977400211589">"網頁搜尋"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"尋找下一個項目"</string>
+ <string name="find_previous" msgid="2196723669388360506">"尋找上一個項目"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> 的地點要求"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"位置要求"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"要求者:<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 949ff0abe6e6..249df57b6a38 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -312,7 +312,7 @@
<string name="permlab_batteryStats" msgid="2789610673514103364">"funda izibalo zebhethri"</string>
<string name="permdesc_batteryStats" msgid="5897346582882915114">"Ivumela uhlelo lokusebenza ukufunda idatha yokusebenza yebhethri leleveli ephansi yamanje. Ingavumela uhlelo lokusebenza ukuthola ulwazi lemininingwane mayelana nokuthi iziphi izinhlelo zokusebenza ozisebenzisayo."</string>
<string name="permlab_updateBatteryStats" msgid="3719689764536379557">"guqula izibalo zebhetri"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Ivumela uhlelo lokusebenza ukuthi luguqule imininingwane yebhethri eqoqiwe. Akwenzelwe ukuthi kusetshenziswe izinhlelo zokusebenza ezijwayelekile."</string>
+ <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Ivumela uhlelo lokusebenza ukuthi luguqule izibalo zebhethri eziqoqiwe. Akwenzelwe ukuthi kusetshenziswe izinhlelo zokusebenza ezijwayelekile."</string>
<string name="permlab_backup" msgid="470013022865453920">"lawula ukusekela ngokulondoloza uhlelo bese ubuyisela esimweni"</string>
<string name="permdesc_backup" msgid="6912230525140589891">"Ivumela insiza ukuthi ilawule isipele sesistimu kanye nohlelo lokubuyiselwa kabusha. Ayenzelwe ukusetshenziswa izinsiza ezijwayelekile."</string>
<string name="permlab_confirm_full_backup" msgid="5557071325804469102">"qinisekisa isipele sonke noma buyisela futhi ukusebenza"</string>
@@ -320,7 +320,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"bonisa amawindi angavunyelwe"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ivumela insiza ukuthi yakhe amawindi enzelwe ukuthi asetshenziswe inkundla yokusetshenziswa kwangaphakathi kwesistimu. Ayisethsnziswa izinsiza ezijwayelekile."</string>
<string name="permlab_systemAlertWindow" msgid="3543347980839518613">"dweba phezulu kwezinye izinhlelo zokusebenza"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Ibumela uhlelo lokusebenza ukudweba phezu kwezinye izinhlelo zokusebenza noma izingxene zokusetshenziswa ukubonwa. Zingaphazamisa ukusebenzisa kwakho kokusetshenziswa kubonwa kunoma uluphi uhlelo lokusebenza, noma ukushintsha ocabanga ukuthi uyakubona kwezinye izinhlelo zokusebenza."</string>
+ <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Ivumela uhlelo lokusebenza ukudweba phezu kwezinye izinhlelo zokusebenza noma izingxene zokusetshenziswa ukubonwa. Zingaphazamisa ukusebenzisa kwakho kokusetshenziswa kubonwa kunoma uluphi uhlelo lokusebenza, noma ukushintsha ocabanga ukuthi uyakubona kwezinye izinhlelo zokusebenza."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"guqula isivinini sokugqwayiza jikelele"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ivumela uhlelo lokusebenza ukushintsha isivinini sokugqwayiza jikelele (ukugqwayiza okusheshayo noma okulengayo) nganoma isiphi isikhathi."</string>
<string name="permlab_manageAppTokens" msgid="1286505717050121370">"lawula amathokheni ezinsiza"</string>
@@ -623,10 +623,8 @@
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Idinga ukuthi idatha yohlelo lokusebenza olugciniwe ibethelwe"</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"Khubaza amakhamera"</string>
<string name="policydesc_disableCamera" msgid="2306349042834754597">"Vimbela ukusetshenziswa kwamadivaysi wonke wamakhamera"</string>
- <!-- no translation found for policylab_disableKeyguardFeatures (266329104542638802) -->
- <skip />
- <!-- no translation found for policydesc_disableKeyguardFeatures (3467082272186534614) -->
- <skip />
+ <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Khubaza izici kokhiye abagadile"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Vikela ukusebenza kwezinye izici kokhiye abagadile."</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Ekhaya"</item>
<item msgid="869923650527136615">"Iselula"</item>
@@ -1262,10 +1260,8 @@
<string name="share" msgid="1778686618230011964">"Yabelana"</string>
<string name="find" msgid="4808270900322985960">"Thola"</string>
<string name="websearch" msgid="4337157977400211589">"USesho lweWebhu"</string>
- <!-- no translation found for find_next (5742124618942193978) -->
- <skip />
- <!-- no translation found for find_previous (2196723669388360506) -->
- <skip />
+ <string name="find_next" msgid="5742124618942193978">"Thola okulandelayo"</string>
+ <string name="find_previous" msgid="2196723669388360506">"Thola kwangaphambilini"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Isicelo sendawo esiphuma ku-<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="gpsNotifTitle" msgid="5446858717157416839">"Isicelo sendawo"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"Icelwe ngu-:<xliff:g id="NAME">%1$s</xliff:g><xliff:g id="SERVICE">%2$s</xliff:g>"</string>
diff --git a/docs/html/about/versions/android-2.3.jd b/docs/html/about/versions/android-2.3.jd
index 871597315281..89bf43273761 100644
--- a/docs/html/about/versions/android-2.3.jd
+++ b/docs/html/about/versions/android-2.3.jd
@@ -406,17 +406,6 @@ notification style.</li>
</ul>
</li>
-<li>WebView
-<ul>
-<li>New {@link
-android.webkit.WebSettings#setUseWebViewBackgroundForOverscrollBackground(
-boolean) setUseWebViewBackgroundForOverscrollBackground()} method lets a {@link
-android.webkit.WebView} specify whether to use its own background for the
-overscroll background. </li>
-</ul>
-</li>
-</ul>
-
<h3 id="extralargescreens">Extra Large Screens</h3>
<p>The platform now supports extra large screen sizes, such as those that might
@@ -707,4 +696,4 @@ declaring the attribute prevents the application from being installed on earlier
versions of the platform.</p>
<p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
-Level?</a></p> \ No newline at end of file
+Level?</a></p>
diff --git a/docs/html/guide/topics/resources/string-resource.jd b/docs/html/guide/topics/resources/string-resource.jd
index 5f5484ee42bb..da410a4cecc3 100644
--- a/docs/html/guide/topics/resources/string-resource.jd
+++ b/docs/html/guide/topics/resources/string-resource.jd
@@ -13,8 +13,7 @@ your application with strings:</p>
<dt><a href="#StringArray">String Array</a></dt>
<dd>XML resource that provides an array of strings.</dd>
<dt><a href="#Plurals">Quantity Strings (Plurals)</a></dt>
- <dd>XML resource that carries different strings for different quantities
- of the same word or phrase.</dd>
+ <dd>XML resource that carries different strings for pluralization.</dd>
</dl>
<p>All strings are capable of applying some styling markup and formatting arguments. For
@@ -231,10 +230,19 @@ so Android provides you with methods such as
{@link android.content.res.Resources#getQuantityString(int,int) getQuantityString()} to select
the appropriate resource for you.
-<p>Note that the selection is made based on grammatical necessity. A string for <code>zero</code>
-in English will be ignored even if the quantity is 0, because 0 isn't grammatically different
-from 2, or any other number except 1 ("zero books", "one book", "two books", and so on).
-Don't be misled either by the fact that, say, <code>two</code> sounds like it could only apply to
+<p>Although historically called "quantity strings" (and still called that in API), quantity
+strings should <i>only</i> be used for plurals. It would be a mistake to use quantity strings to
+implement something like Gmail's "Inbox" versus "Inbox (12)" when there are unread messages, for
+example. It might seem convenient to use quantity strings instead of an {@code if} statement,
+but it's important to note that some languages (such as Chinese) don't make these grammatical
+distinctions at all, so you'll always get the <code>other</code> string.
+
+<p>The selection of which string to use is made solely based on grammatical <i>necessity</i>.
+In English, a string for <code>zero</code> will be ignored even if the quantity is 0, because 0
+isn't grammatically different from 2, or any other number except 1 ("zero books", "one book",
+"two books", and so on).
+
+<p>Don't be misled either by the fact that, say, <code>two</code> sounds like it could only apply to
the quantity 2: a language may require that 2, 12, 102 (and so on) are all treated like one
another but differently to other quantities. Rely on your translator to know what distinctions
their language actually insists upon.
@@ -313,7 +321,7 @@ values, with non-exhaustive examples in parentheses:
<td>{@code one}</td><td>When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).</td>
</tr>
<tr>
- <td>{@code two}</td><td>When the language requires special treatment of numbers like two (as in Welsh).</td>
+ <td>{@code two}</td><td>When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).</td>
</tr>
<tr>
<td>{@code few}</td><td>When the language requires special treatment of "small" numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).</td>
@@ -322,7 +330,7 @@ values, with non-exhaustive examples in parentheses:
<td>{@code many}</td><td>When the language requires special treatment of "large" numbers (as with numbers ending 11-99 in Maltese).</td>
</tr>
<tr>
- <td>{@code other}</td><td>When the language does not require special treatment of the given quantity.</td>
+ <td>{@code other}</td><td>When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).</td>
</tr>
</table>
</dd>
diff --git a/docs/html/training/basics/activity-lifecycle/recreating.jd b/docs/html/training/basics/activity-lifecycle/recreating.jd
index 8c7126a5426f..1b88e199b30c 100644
--- a/docs/html/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html/training/basics/activity-lifecycle/recreating.jd
@@ -54,20 +54,25 @@ load alternative resources (such as the layout).</p>
<p>By default, the system uses the {@link android.os.Bundle} instance state to save information
about each {@link android.view.View} object in your activity layout (such as the text value entered
into an {@link android.widget.EditText} object). So, if your activity instance is destroyed and
-recreated, the state of the layout is automatically restored to its previous state. However, your
+recreated, the state of the layout is restored to its previous state with no
+code required by you. However, your
activity might have more state information that you'd like to restore, such as member variables that
track the user's progress in the activity.</p>
-<p>In order for you to add additional data to the saved instance state for your activity, there's an
-additional callback method in the activity lifecycle that's not shown in the illustration from
-previous lessons. The method is {@link android.app.Activity#onSaveInstanceState
-onSaveInstanceState()} and the system calls it when the user is leaving your activity. When the
-system calls this method, it passes the {@link android.os.Bundle} object that will be saved in the
-event that your activity is destroyed unexpectedly so you can add additional information to it. Then
-if the system must recreate the activity instance after it was destroyed, it passes the same {@link
-android.os.Bundle} object to your activity's {@link android.app.Activity#onRestoreInstanceState
-onRestoreInstanceState()} method and also to your {@link android.app.Activity#onCreate onCreate()}
-method.</p>
+<p class="note"><strong>Note:</strong> In order for the Android system to restore the state of
+the views in your activity, <strong>each view must have a unique ID</strong>, supplied by the
+<a href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code
+android:id}</a> attribute.</p>
+
+<p>To save additional data about the activity state, you must override
+the {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} callback method.
+The system calls this method when the user is leaving your activity
+and passes it the {@link android.os.Bundle} object that will be saved in the
+event that your activity is destroyed unexpectedly. If
+the system must recreate the activity instance later, it passes the same {@link
+android.os.Bundle} object to both the {@link android.app.Activity#onRestoreInstanceState
+onRestoreInstanceState()} and {@link android.app.Activity#onCreate onCreate()}
+methods.</p>
<img src="{@docRoot}images/training/basics/basic-lifecycle-savestate.png" />
<p class="img-caption"><strong>Figure 2.</strong> As the system begins to stop your activity, it
diff --git a/include/storage/IMountService.h b/include/storage/IMountService.h
index 43df7f06f4d4..c3d34d84958b 100644
--- a/include/storage/IMountService.h
+++ b/include/storage/IMountService.h
@@ -21,6 +21,8 @@
#include <storage/IMountShutdownObserver.h>
#include <storage/IObbActionListener.h>
+#include <utils/String8.h>
+
#include <binder/IInterface.h>
#include <binder/Parcel.h>
@@ -60,8 +62,9 @@ public:
String16*& containers) = 0;
virtual void shutdown(const sp<IMountShutdownObserver>& observer) = 0;
virtual void finishMediaUpdate() = 0;
- virtual void mountObb(const String16& filename, const String16& key,
- const sp<IObbActionListener>& token, const int32_t nonce) = 0;
+ virtual void mountObb(const String16& rawPath, const String16& canonicalPath,
+ const String16& key, const sp<IObbActionListener>& token,
+ const int32_t nonce) = 0;
virtual void unmountObb(const String16& filename, const bool force,
const sp<IObbActionListener>& token, const int32_t nonce) = 0;
virtual bool isObbMounted(const String16& filename) = 0;
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index 898962a4ced7..f0f72f9ef822 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -227,21 +227,29 @@ void Caches::clearGarbage() {
textureCache.clearGarbage();
pathCache.clearGarbage();
- Mutex::Autolock _l(mGarbageLock);
+ Vector<DisplayList*> displayLists;
+ Vector<Layer*> layers;
+
+ { // scope for the lock
+ Mutex::Autolock _l(mGarbageLock);
+ displayLists = mDisplayListGarbage;
+ layers = mLayerGarbage;
+ mDisplayListGarbage.clear();
+ mLayerGarbage.clear();
+ }
- size_t count = mLayerGarbage.size();
+ size_t count = displayLists.size();
for (size_t i = 0; i < count; i++) {
- Layer* layer = mLayerGarbage.itemAt(i);
- LayerRenderer::destroyLayer(layer);
+ DisplayList* displayList = displayLists.itemAt(i);
+ delete displayList;
}
- mLayerGarbage.clear();
- count = mDisplayListGarbage.size();
+ count = layers.size();
for (size_t i = 0; i < count; i++) {
- DisplayList* displayList = mDisplayListGarbage.itemAt(i);
- delete displayList;
+ Layer* layer = layers.itemAt(i);
+ delete layer;
}
- mDisplayListGarbage.clear();
+ layers.clear();
}
void Caches::deleteLayerDeferred(Layer* layer) {
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index d2cd4407ed94..9b6205d31f28 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -134,10 +134,6 @@ struct Layer {
return fbo;
}
- inline GLuint* getTexturePointer() {
- return &texture.id;
- }
-
inline GLuint getTexture() {
return texture.id;
}
@@ -181,15 +177,31 @@ struct Layer {
ANDROID_API void setColorFilter(SkiaColorFilter* filter);
inline void bindTexture() {
- glBindTexture(renderTarget, texture.id);
+ if (texture.id) {
+ glBindTexture(renderTarget, texture.id);
+ }
}
inline void generateTexture() {
- glGenTextures(1, &texture.id);
+ if (!texture.id) {
+ glGenTextures(1, &texture.id);
+ }
}
inline void deleteTexture() {
- if (texture.id) glDeleteTextures(1, &texture.id);
+ if (texture.id) {
+ glDeleteTextures(1, &texture.id);
+ texture.id = 0;
+ }
+ }
+
+ /**
+ * When the caller frees the texture itself, the caller
+ * must call this method to tell this layer that it lost
+ * the texture.
+ */
+ void clearTexture() {
+ texture.id = 0;
}
inline void deleteFbo() {
diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp
index 18d8324b8488..81f7b94b31ee 100644
--- a/libs/hwui/ResourceCache.cpp
+++ b/libs/hwui/ResourceCache.cpp
@@ -326,8 +326,7 @@ void ResourceCache::deleteResourceReferenceLocked(void* resource, ResourceRefere
break;
case kLayer: {
Layer* layer = (Layer*) resource;
- layer->freeResourcesLocked();
- delete layer;
+ Caches::getInstance().deleteLayerDeferred(layer);
}
break;
}
diff --git a/libs/storage/IMountService.cpp b/libs/storage/IMountService.cpp
index 4ec8b25ff27e..5701678b3482 100644
--- a/libs/storage/IMountService.cpp
+++ b/libs/storage/IMountService.cpp
@@ -433,12 +433,13 @@ public:
reply.readExceptionCode();
}
- void mountObb(const String16& filename, const String16& key,
+ void mountObb(const String16& rawPath, const String16& canonicalPath, const String16& key,
const sp<IObbActionListener>& token, int32_t nonce)
{
Parcel data, reply;
data.writeInterfaceToken(IMountService::getInterfaceDescriptor());
- data.writeString16(filename);
+ data.writeString16(rawPath);
+ data.writeString16(canonicalPath);
data.writeString16(key);
data.writeStrongBinder(token->asBinder());
data.writeInt32(nonce);
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index b127b53bda04..5b3c9e2470ac 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -480,7 +480,7 @@ public class LocationManager {
* @param provider the name of the provider with which to register
* @param minTime minimum time interval between location updates, in milliseconds
* @param minDistance minimum distance between location updates, in meters
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called for
* each location update
*
@@ -512,7 +512,7 @@ public class LocationManager {
* @param provider the name of the provider with which to register
* @param minTime minimum time interval between location updates, in milliseconds
* @param minDistance minimum distance between location updates, in meters
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called for
* each location update
* @param looper a Looper object whose message queue will be used to
@@ -547,7 +547,7 @@ public class LocationManager {
* @param minDistance minimum distance between location updates, in meters
* @param criteria contains parameters for the location manager to choose the
* appropriate provider and parameters to compute the location
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called for
* each location update
* @param looper a Looper object whose message queue will be used to
@@ -581,7 +581,7 @@ public class LocationManager {
* @param provider the name of the provider with which to register
* @param minTime minimum time interval between location updates, in milliseconds
* @param minDistance minimum distance between location updates, in meters
- * @param intent a {#link PendingIntent} to be sent for each location update
+ * @param intent a {@link PendingIntent} to be sent for each location update
*
* @throws IllegalArgumentException if provider is null or doesn't exist
* on this device
@@ -689,7 +689,7 @@ public class LocationManager {
* @param minDistance minimum distance between location updates, in meters
* @param criteria contains parameters for the location manager to choose the
* appropriate provider and parameters to compute the location
- * @param intent a {#link PendingIntent} to be sent for each location update
+ * @param intent a {@link PendingIntent} to be sent for each location update
*
* @throws IllegalArgumentException if criteria is null
* @throws IllegalArgumentException if intent is null
@@ -716,7 +716,7 @@ public class LocationManager {
* for more detail on how to use this (deprecated) method.
*
* @param provider the name of the provider with which to register
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called when
* the location update is available
* @param looper a Looper object whose message queue will be used to
@@ -748,7 +748,7 @@ public class LocationManager {
*
* @param criteria contains parameters for the location manager to choose the
* appropriate provider and parameters to compute the location
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called when
* the location update is available
* @param looper a Looper object whose message queue will be used to
@@ -778,7 +778,7 @@ public class LocationManager {
* for more detail on how to use this (deprecated) method.
*
* @param provider the name of the provider with which to register
- * @param intent a {#link PendingIntent} to be sent for the location update
+ * @param intent a {@link PendingIntent} to be sent for the location update
*
* @throws IllegalArgumentException if provider is null or doesn't exist
* @throws IllegalArgumentException if intent is null
@@ -804,7 +804,7 @@ public class LocationManager {
*
* @param criteria contains parameters for the location manager to choose the
* appropriate provider and parameters to compute the location
- * @param intent a {#link PendingIntent} to be sent for the location update
+ * @param intent a {@link PendingIntent} to be sent for the location update
*
* @throws IllegalArgumentException if provider is null or doesn't exist
* @throws IllegalArgumentException if intent is null
@@ -860,8 +860,10 @@ public class LocationManager {
* {@link #KEY_PROVIDER_ENABLED} or {@link #KEY_STATUS_CHANGED} will not
* be received.
*
+ * <p> To unregister for Location updates, use: {@link #removeUpdates(LocationListener)}.
+ *
* @param request quality of service required, null for default low power
- * @param listener a {#link LocationListener} whose
+ * @param listener a {@link LocationListener} whose
* {@link LocationListener#onLocationChanged} method will be called when
* the location update is available
* @param looper a Looper object whose message queue will be used to
@@ -881,11 +883,13 @@ public class LocationManager {
/**
* Register for fused location updates using a LocationRequest and a pending intent.
*
+ * <p> To unregister for Location updates, use: {@link #removeUpdates(PendingIntent)}.
+ *
* <p> See {@link #requestLocationUpdates(LocationRequest, LocationListener, Looper)}
* for more detail.
*
* @param request quality of service required, null for default low power
- * @param intent a {#link PendingIntent} to be sent for the location update
+ * @param intent a {@link PendingIntent} to be sent for the location update
*
* @throws IllegalArgumentException if intent is null
* @throws SecurityException if no suitable permission is present
@@ -1603,7 +1607,7 @@ public class LocationManager {
/**
* Adds an NMEA listener.
*
- * @param listener a {#link GpsStatus.NmeaListener} object to register
+ * @param listener a {@link GpsStatus.NmeaListener} object to register
*
* @return true if the listener was successfully added
*
@@ -1633,7 +1637,7 @@ public class LocationManager {
/**
* Removes an NMEA listener.
*
- * @param listener a {#link GpsStatus.NmeaListener} object to remove
+ * @param listener a {@link GpsStatus.NmeaListener} object to remove
*/
public void removeNmeaListener(GpsStatus.NmeaListener listener) {
try {
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index b3beaa6fe5f8..270c88ff72f9 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -314,6 +314,13 @@ public class AudioManager {
public static final int FLAG_VIBRATE = 1 << 4;
/**
+ * Indicates to VolumePanel that the volume slider should be disabled as user
+ * cannot change the stream volume
+ * @hide
+ */
+ public static final int FLAG_FIXED_VOLUME = 1 << 5;
+
+ /**
* Ringer mode that will be silent and will not vibrate. (This overrides the
* vibrate setting.)
*
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index c366a8d34340..a754ef363a2f 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -388,9 +388,11 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
private Looper mSoundPoolLooper = null;
// volume applied to sound played with playSoundEffect()
private static int sSoundEffectVolumeDb;
- // getActiveStreamType() will return STREAM_NOTIFICATION during this period after a notification
+ // getActiveStreamType() will return:
+ // - STREAM_NOTIFICATION on tablets during this period after a notification stopped
+ // - STREAM_MUSIC on phones during this period after music or talkback/voice search prompt
// stopped
- private static final int NOTIFICATION_VOLUME_DELAY_MS = 5000;
+ private static final int DEFAULT_STREAM_TYPE_OVERRIDE_DELAY_MS = 5000;
// previous volume adjustment direction received by checkForRingerModeChange()
private int mPrevVolDirection = AudioManager.ADJUST_SAME;
// Keyguard manager proxy
@@ -422,6 +424,11 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
*/
public final static int STREAM_REMOTE_MUSIC = -200;
+ // Devices for which the volume is fixed and VolumePanel slider should be disabled
+ final int mFixedVolumeDevices = AudioSystem.DEVICE_OUT_AUX_DIGITAL |
+ AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET |
+ AudioSystem.DEVICE_OUT_ALL_USB;
+
///////////////////////////////////////////////////////////////////////////
// Construction
///////////////////////////////////////////////////////////////////////////
@@ -760,58 +767,66 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
return;
}
- // If either the client forces allowing ringer modes for this adjustment,
- // or the stream type is one that is affected by ringer modes
- if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
- (streamTypeAlias == getMasterStreamType())) {
- int ringerMode = getRingerMode();
- // do not vibrate if already in vibrate mode
- if (ringerMode == AudioManager.RINGER_MODE_VIBRATE) {
- flags &= ~AudioManager.FLAG_VIBRATE;
- }
- // Check if the ringer mode changes with this volume adjustment. If
- // it does, it will handle adjusting the volume, so we won't below
- adjustVolume = checkForRingerModeChange(aliasIndex, direction, step);
- if ((streamTypeAlias == getMasterStreamType()) &&
- (mRingerMode == AudioManager.RINGER_MODE_SILENT)) {
- streamState.setLastAudibleIndex(0, device);
- }
- }
-
- // If stream is muted, adjust last audible index only
int index;
- final int oldIndex = mStreamStates[streamType].getIndex(device,
- (mStreamStates[streamType].muteCount() != 0) /* lastAudible */);
+ int oldIndex;
- if (streamState.muteCount() != 0) {
- if (adjustVolume) {
- // Post a persist volume msg
- // no need to persist volume on all streams sharing the same alias
- streamState.adjustLastAudibleIndex(direction * step, device);
- sendMsg(mAudioHandler,
- MSG_PERSIST_VOLUME,
- SENDMSG_QUEUE,
- PERSIST_LAST_AUDIBLE,
- device,
- streamState,
- PERSIST_DELAY);
- }
- index = mStreamStates[streamType].getIndex(device, true /* lastAudible */);
+ if ((streamTypeAlias == AudioSystem.STREAM_MUSIC) &&
+ ((device & mFixedVolumeDevices) != 0)) {
+ flags |= AudioManager.FLAG_FIXED_VOLUME;
+ index = mStreamStates[streamType].getMaxIndex();
+ oldIndex = index;
} else {
- if (adjustVolume && streamState.adjustIndex(direction * step, device)) {
- // Post message to set system volume (it in turn will post a message
- // to persist). Do not change volume if stream is muted.
- sendMsg(mAudioHandler,
- MSG_SET_DEVICE_VOLUME,
- SENDMSG_QUEUE,
- device,
- 0,
- streamState,
- 0);
+ // If either the client forces allowing ringer modes for this adjustment,
+ // or the stream type is one that is affected by ringer modes
+ if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
+ (streamTypeAlias == getMasterStreamType())) {
+ int ringerMode = getRingerMode();
+ // do not vibrate if already in vibrate mode
+ if (ringerMode == AudioManager.RINGER_MODE_VIBRATE) {
+ flags &= ~AudioManager.FLAG_VIBRATE;
+ }
+ // Check if the ringer mode changes with this volume adjustment. If
+ // it does, it will handle adjusting the volume, so we won't below
+ adjustVolume = checkForRingerModeChange(aliasIndex, direction, step);
+ if ((streamTypeAlias == getMasterStreamType()) &&
+ (mRingerMode == AudioManager.RINGER_MODE_SILENT)) {
+ streamState.setLastAudibleIndex(0, device);
+ }
}
- index = mStreamStates[streamType].getIndex(device, false /* lastAudible */);
- }
+ // If stream is muted, adjust last audible index only
+ oldIndex = mStreamStates[streamType].getIndex(device,
+ (mStreamStates[streamType].muteCount() != 0) /* lastAudible */);
+
+ if (streamState.muteCount() != 0) {
+ if (adjustVolume) {
+ // Post a persist volume msg
+ // no need to persist volume on all streams sharing the same alias
+ streamState.adjustLastAudibleIndex(direction * step, device);
+ sendMsg(mAudioHandler,
+ MSG_PERSIST_VOLUME,
+ SENDMSG_QUEUE,
+ PERSIST_LAST_AUDIBLE,
+ device,
+ streamState,
+ PERSIST_DELAY);
+ }
+ index = mStreamStates[streamType].getIndex(device, true /* lastAudible */);
+ } else {
+ if (adjustVolume && streamState.adjustIndex(direction * step, device)) {
+ // Post message to set system volume (it in turn will post a message
+ // to persist). Do not change volume if stream is muted.
+ sendMsg(mAudioHandler,
+ MSG_SET_DEVICE_VOLUME,
+ SENDMSG_QUEUE,
+ device,
+ 0,
+ streamState,
+ 0);
+ }
+ index = mStreamStates[streamType].getIndex(device, false /* lastAudible */);
+ }
+ }
sendVolumeUpdate(streamType, oldIndex, index, flags);
}
@@ -837,40 +852,47 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
VolumeStreamState streamState = mStreamStates[mStreamVolumeAlias[streamType]];
final int device = getDeviceForStream(streamType);
+ int oldIndex;
- // get last audible index if stream is muted, current index otherwise
- final int oldIndex = streamState.getIndex(device,
- (streamState.muteCount() != 0) /* lastAudible */);
-
- index = rescaleIndex(index * 10, streamType, mStreamVolumeAlias[streamType]);
+ if ((mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) &&
+ ((device & mFixedVolumeDevices) != 0)) {
+ flags |= AudioManager.FLAG_FIXED_VOLUME;
+ index = mStreamStates[streamType].getMaxIndex();
+ oldIndex = index;
+ } else {
+ // get last audible index if stream is muted, current index otherwise
+ oldIndex = streamState.getIndex(device,
+ (streamState.muteCount() != 0) /* lastAudible */);
- if (!checkSafeMediaVolume(mStreamVolumeAlias[streamType], index, device)) {
- return;
- }
+ index = rescaleIndex(index * 10, streamType, mStreamVolumeAlias[streamType]);
- // setting volume on master stream type also controls silent mode
- if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
- (mStreamVolumeAlias[streamType] == getMasterStreamType())) {
- int newRingerMode;
- if (index == 0) {
- newRingerMode = mHasVibrator ? AudioManager.RINGER_MODE_VIBRATE
- : AudioManager.RINGER_MODE_SILENT;
- setStreamVolumeInt(mStreamVolumeAlias[streamType],
- index,
- device,
- false,
- true);
- } else {
- newRingerMode = AudioManager.RINGER_MODE_NORMAL;
+ if (!checkSafeMediaVolume(mStreamVolumeAlias[streamType], index, device)) {
+ return;
}
- setRingerMode(newRingerMode);
- }
- setStreamVolumeInt(mStreamVolumeAlias[streamType], index, device, false, true);
- // get last audible index if stream is muted, current index otherwise
- index = mStreamStates[streamType].getIndex(device,
- (mStreamStates[streamType].muteCount() != 0) /* lastAudible */);
+ // setting volume on master stream type also controls silent mode
+ if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
+ (mStreamVolumeAlias[streamType] == getMasterStreamType())) {
+ int newRingerMode;
+ if (index == 0) {
+ newRingerMode = mHasVibrator ? AudioManager.RINGER_MODE_VIBRATE
+ : AudioManager.RINGER_MODE_SILENT;
+ setStreamVolumeInt(mStreamVolumeAlias[streamType],
+ index,
+ device,
+ false,
+ true);
+ } else {
+ newRingerMode = AudioManager.RINGER_MODE_NORMAL;
+ }
+ setRingerMode(newRingerMode);
+ }
+ setStreamVolumeInt(mStreamVolumeAlias[streamType], index, device, false, true);
+ // get last audible index if stream is muted, current index otherwise
+ index = mStreamStates[streamType].getIndex(device,
+ (mStreamStates[streamType].muteCount() != 0) /* lastAudible */);
+ }
sendVolumeUpdate(streamType, oldIndex, index, flags);
}
@@ -986,13 +1008,15 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
mVolumePanel.postVolumeChanged(streamType, flags);
- oldIndex = (oldIndex + 5) / 10;
- index = (index + 5) / 10;
- Intent intent = new Intent(AudioManager.VOLUME_CHANGED_ACTION);
- intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, streamType);
- intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, index);
- intent.putExtra(AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, oldIndex);
- sendBroadcastToAll(intent);
+ if ((flags & AudioManager.FLAG_FIXED_VOLUME) == 0) {
+ oldIndex = (oldIndex + 5) / 10;
+ index = (index + 5) / 10;
+ Intent intent = new Intent(AudioManager.VOLUME_CHANGED_ACTION);
+ intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, streamType);
+ intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, index);
+ intent.putExtra(AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, oldIndex);
+ sendBroadcastToAll(intent);
+ }
}
// UI update and Broadcast Intent
@@ -1107,7 +1131,15 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
public int getStreamVolume(int streamType) {
ensureValidStreamType(streamType);
int device = getDeviceForStream(streamType);
- return (mStreamStates[streamType].getIndex(device, false /* lastAudible */) + 5) / 10;
+ int index;
+
+ if ((mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) &&
+ (device & mFixedVolumeDevices) != 0) {
+ index = mStreamStates[streamType].getMaxIndex();
+ } else {
+ index = mStreamStates[streamType].getIndex(device, false /* lastAudible */);
+ }
+ return (index + 5) / 10;
}
public int getMasterVolume() {
@@ -2341,7 +2373,8 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
if (DEBUG_VOL)
Log.v(TAG, "getActiveStreamType: Forcing STREAM_REMOTE_MUSIC");
return STREAM_REMOTE_MUSIC;
- } else if (AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC, 0)) {
+ } else if (AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC,
+ DEFAULT_STREAM_TYPE_OVERRIDE_DELAY_MS)) {
if (DEBUG_VOL)
Log.v(TAG, "getActiveStreamType: Forcing STREAM_MUSIC stream active");
return AudioSystem.STREAM_MUSIC;
@@ -2370,9 +2403,9 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
return AudioSystem.STREAM_VOICE_CALL;
}
} else if (AudioSystem.isStreamActive(AudioSystem.STREAM_NOTIFICATION,
- NOTIFICATION_VOLUME_DELAY_MS) ||
+ DEFAULT_STREAM_TYPE_OVERRIDE_DELAY_MS) ||
AudioSystem.isStreamActive(AudioSystem.STREAM_RING,
- NOTIFICATION_VOLUME_DELAY_MS)) {
+ DEFAULT_STREAM_TYPE_OVERRIDE_DELAY_MS)) {
if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_NOTIFICATION");
return AudioSystem.STREAM_NOTIFICATION;
} else if (suggestedStreamType == AudioManager.USE_DEFAULT_STREAM_TYPE) {
diff --git a/native/android/storage_manager.cpp b/native/android/storage_manager.cpp
index f2f36b625de6..399f1ffcb594 100644
--- a/native/android/storage_manager.cpp
+++ b/native/android/storage_manager.cpp
@@ -125,11 +125,20 @@ public:
}
}
- void mountObb(const char* filename, const char* key, AStorageManager_obbCallbackFunc func, void* data) {
+ void mountObb(const char* rawPath, const char* key, AStorageManager_obbCallbackFunc func,
+ void* data) {
+ // Resolve path before sending to MountService
+ char canonicalPath[PATH_MAX];
+ if (realpath(rawPath, canonicalPath) == NULL) {
+ ALOGE("mountObb failed to resolve path %s: %s", rawPath, strerror(errno));
+ return;
+ }
+
ObbCallback* cb = registerObbCallback(func, data);
- String16 filename16(filename);
+ String16 rawPath16(rawPath);
+ String16 canonicalPath16(canonicalPath);
String16 key16(key);
- mMountService->mountObb(filename16, key16, mObbActionListener, cb->nonce);
+ mMountService->mountObb(rawPath16, canonicalPath16, key16, mObbActionListener, cb->nonce);
}
void unmountObb(const char* filename, const bool force, AStorageManager_obbCallbackFunc func, void* data) {
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 3a9b068a4f78..6d8b08fe66d7 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -252,7 +252,8 @@ public class SettingsProvider extends ContentProvider {
if (!DatabaseHelper.isValidTable(this.table)) {
throw new IllegalArgumentException("Bad root path: " + this.table);
}
- if (TABLE_SYSTEM.equals(this.table) || TABLE_SECURE.equals(this.table)) {
+ if (TABLE_SYSTEM.equals(this.table) || TABLE_SECURE.equals(this.table) ||
+ TABLE_GLOBAL.equals(this.table)) {
this.where = Settings.NameValueTable.NAME + "=?";
this.args = new String[] { url.getPathSegments().get(1) };
} else {
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_off.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_off.png
index 8a6475548e69..ab66137680ce 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_off.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_on.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_on.png
index b2be1152d9cc..e058bcdef9db 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_on.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_airplane_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_circle.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_circle.png
new file mode 100644
index 000000000000..f724ea58692a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_circle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_hour.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_hour.png
new file mode 100644
index 000000000000..979ca0846aca
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_hour.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_minute.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_minute.png
new file mode 100644
index 000000000000..eef78c16d869
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_clock_minute.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_off.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_off.png
index b8dbdb093a78..2d0c4790eba1 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_off.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_on.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_on.png
index a20f6b2de8e3..6a2906ea192c 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_on.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_airplane_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_circle.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_circle.png
new file mode 100644
index 000000000000..27904f2d81aa
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_circle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_hour.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_hour.png
new file mode 100644
index 000000000000..4dca96a5a3da
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_hour.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_minute.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_minute.png
new file mode 100644
index 000000000000..12e78189d3af
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_clock_minute.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_off.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_off.png
index f47a193999d6..9a4239bdebac 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_off.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_on.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_on.png
index ef8a7ebe7228..0af4f3d1b70a 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_on.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_airplane_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_circle.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_circle.png
new file mode 100644
index 000000000000..c7864baa512e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_circle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_hour.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_hour.png
new file mode 100644
index 000000000000..a293c0bacf93
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_hour.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_minute.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_minute.png
new file mode 100644
index 000000000000..bb0c17c28467
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_clock_minute.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable/qs_tile_background.xml b/packages/SystemUI/res/drawable/qs_tile_background.xml
index 83dadd84270f..96891c14bd33 100644
--- a/packages/SystemUI/res/drawable/qs_tile_background.xml
+++ b/packages/SystemUI/res/drawable/qs_tile_background.xml
@@ -18,9 +18,9 @@
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
- <color android:color="#252725" />
+ <color android:color="#212121" />
</item>
<item>
- <color android:color="#1B1D1B" />
+ <color android:color="#161616" />
</item>
</selector>
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 2df9f6cabd86..635dac82baca 100644
--- a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
+++ b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
@@ -38,23 +38,14 @@
<com.android.systemui.recent.RecentsHorizontalScrollView android:id="@+id/recents_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:layout_marginRight="@dimen/status_bar_recents_right_glow_margin"
- android:divider="@null"
- android:stackFromBottom="true"
android:fadingEdge="horizontal"
android:scrollbars="none"
- android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length"
- android:layout_gravity="bottom|right"
- android:orientation="horizontal"
- android:clipToPadding="false"
- android:clipChildren="false">
+ android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length">
<LinearLayout android:id="@+id/recents_linear_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:orientation="horizontal"
- android:clipToPadding="false"
- android:clipChildren="false">
+ android:orientation="horizontal">
</LinearLayout>
</com.android.systemui.recent.RecentsHorizontalScrollView>
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_alarm.xml b/packages/SystemUI/res/layout/quick_settings_tile_alarm.xml
new file mode 100644
index 000000000000..0327bee5069e
--- /dev/null
+++ b/packages/SystemUI/res/layout/quick_settings_tile_alarm.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/TextAppearance.QuickSettings.TileView"
+ android:id="@+id/alarm_textview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:drawableTop="@drawable/ic_qs_alarm_on"
+ /> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_time.xml b/packages/SystemUI/res/layout/quick_settings_tile_time.xml
index f09e0cb7680b..4ffbf52389f5 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_time.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_time.xml
@@ -19,30 +19,20 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
- <com.android.systemui.statusbar.policy.Clock
- android:textAppearance="@style/TextAppearance.QuickSettings.Clock"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:paddingTop="3dp"
- android:paddingBottom="3dp"
- android:singleLine="true"
+ <AnalogClock
+ android:id="@+id/analog_clock"
+ android:layout_width="32dp"
+ android:layout_height="32dp"
+ android:layout_gravity="center"
+ android:layout_marginBottom="10dp"
+ android:dial="@drawable/ic_qs_clock_circle"
+ android:hand_hour="@drawable/ic_qs_clock_hour"
+ android:hand_minute="@drawable/ic_qs_clock_minute"
/>
<com.android.systemui.statusbar.policy.QuickSettingsDateView
- android:textAppearance="@style/TextAppearance.QuickSettings.Date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- />
- <TextView
- android:textAppearance="@style/TextAppearance.QuickSettings.Alarm"
- android:id="@+id/alarm_textview"
+ android:textAppearance="@style/TextAppearance.QuickSettings.TileView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
- android:paddingTop="2dp"
- android:paddingBottom="4dp"
- android:drawableLeft="@drawable/ic_qs_alarm_on"
- android:drawablePadding="4dp"
/>
</LinearLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index 6ed5fb775afe..bf20e9dbdec2 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -35,13 +35,13 @@
android:layout_width="@dimen/status_bar_icon_size"
android:layout_height="match_parent"
android:paddingLeft="6dip"
- android:paddingBottom="2dip"
+ android:paddingBottom="2dip"
android:src="@drawable/ic_sysbar_lights_out_dot_small"
android:scaleType="center"
android:visibility="gone"
/>
- <LinearLayout android:id="@+id/icons"
+ <LinearLayout android:id="@+id/status_bar_contents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="6dip"
@@ -50,7 +50,7 @@
>
<LinearLayout
- android:id="@+id/notification_icon_area"
+ android:id="@+id/notification_icon_area"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1"
@@ -71,42 +71,48 @@
android:orientation="horizontal"/>
</LinearLayout>
- <LinearLayout android:id="@+id/statusIcons"
+ <LinearLayout android:id="@+id/system_icon_area"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:gravity="center_vertical"
- android:orientation="horizontal"/>
+ android:orientation="horizontal">
- <LinearLayout
- android:id="@+id/signal_battery_cluster"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="2dp"
- android:orientation="horizontal"
- android:gravity="center"
- >
- <include layout="@layout/signal_cluster_view"
- android:id="@+id/signal_cluster"
+ <LinearLayout android:id="@+id/statusIcons"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- <ImageView
- android:id="@+id/battery"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"/>
+
+ <LinearLayout
+ android:id="@+id/signal_battery_cluster"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="2dp"
+ android:orientation="horizontal"
+ android:gravity="center"
+ >
+ <include layout="@layout/signal_cluster_view"
+ android:id="@+id/signal_cluster"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ />
+ <ImageView
+ android:id="@+id/battery"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:paddingLeft="4dip"
+ />
+ </LinearLayout>
+
+ <com.android.systemui.statusbar.policy.Clock
+ android:id="@+id/clock"
+ android:textAppearance="@style/TextAppearance.StatusBar.Clock"
android:layout_width="wrap_content"
- android:paddingLeft="4dip"
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:paddingLeft="6dip"
+ android:gravity="center_vertical|left"
/>
</LinearLayout>
-
- <com.android.systemui.statusbar.policy.Clock
- android:id="@+id/clock"
- android:textAppearance="@style/TextAppearance.StatusBar.Clock"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:singleLine="true"
- android:paddingLeft="6dip"
- android:gravity="center_vertical|left"
- />
</LinearLayout>
<LinearLayout android:id="@+id/ticker"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index f2e83d866081..6436a7fdef3e 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -33,6 +33,8 @@
layout="@layout/carrier_label"
android:layout_height="@dimen/carrier_label_height"
android:layout_width="match_parent"
+ android:layout_marginBottom="@dimen/close_handle_height"
+ android:layout_gravity="bottom"
/>
<LinearLayout
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index d46ac6004044..122fd601b2ae 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skerm is in portretoriëntasie gesluit."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Begin drome"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Vliegtuigmodus"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Laai, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Gehef"</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> toestelle)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth af"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helderheid"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Outoroteer"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotasie gesluit"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 641a5e84b839..2e220ecb7b55 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -150,13 +150,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"ኤተርኔት"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"የአውሮፕላን ሁነታ"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"ባትሪ በመሙላት ላይ፣ <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"ባትሪ ሞልቷል።"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ብሉቱዝ"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ብሉቱዝ (<xliff:g id="NUMBER">%d</xliff:g> መሣሪያዎች)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ብሉቱዝ ጠፍቷል"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"ብሩህነት"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ራስ-አዙር"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"አዙሪት ተቆልፏል"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"እኔ"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"ብሩህነት"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 1f62e2c2b481..659eb5855a8e 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -150,13 +150,13 @@
<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">"بدء Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"وضع الطائرة"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"جارٍ الشحن، <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"تم الشحن"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"بلوتوث"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"بلوتوث (<xliff:g id="NUMBER">%d</xliff:g> من الأجهزة)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"إيقاف البلوتوث"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"السطوع"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"تدوير تلقائي"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"تم قفل التدوير"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"أنا"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"السطوع"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 50d39d85135d..0d6f4c66721d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Экран заблакiраваны ў партрэтнай арыентацыі."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Пачаць мары"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Рэжым палёту"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Зарадка, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Зараджана"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (прылады: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth выключаны"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркасць"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Аўтапаварот"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Паварот забаронены"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Яркасць"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 298c1aebc9c1..02c38b71cbc3 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -150,13 +150,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Самолетен режим"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Зарежда се, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Заредена"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> устройства)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth е изключен"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркост"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автоматична ориентация"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Ориентацията е заключена"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"Аз"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</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_brightness_dialog_title" msgid="8599674057673605368">"Яркост"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index fbc8b130093f..7aa1e889fe95 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -44,9 +44,9 @@
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mode d\'avió"</string>
<string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Gira pantalla automàticament"</string>
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"Silen."</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
+ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificacions"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth sense fil"</string>
+ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth ancorat"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configura els mètodes d\'entrada"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Teclat físic"</string>
<string name="usb_device_permission_prompt" msgid="834698001271562057">"Vols permetre que l\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g> accedeixi al dispositiu USB?"</string>
@@ -118,7 +118,7 @@
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Vora"</string>
<string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
<string name="accessibility_no_sim" msgid="8274017118472455155">"No hi ha cap targeta SIM."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Connexió Bluetooth mitjançant dispositiu portàtil"</string>
+ <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ancoratge de Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode d\'avió."</string>
<!-- String.format failed for translation -->
<!-- no translation found for accessibility_battery_level (7451474187113371965) -->
@@ -151,14 +151,14 @@
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"La pantalla està bloquejada en orientació horitzontal."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla està bloquejada en orientació vertical."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="870400522982252717">"Comença els somnis"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="start_dreams" msgid="870400522982252717">"Comença l\'Estalvi de pantalla interactiu"</string>
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode d\'avió"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"S\'està carregant, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Carregada"</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> dispositius)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth desactivat"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillantor"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotació automàtica"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotació bloquejada"</string>
@@ -172,8 +172,9 @@
<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_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">"No hi ha cap connexió de 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_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 80ba6208c02a..5a391a91a19d 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamčena v orientaci na výšku."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Spustit sny"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Režim V letadle"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Nabíjení, <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Nabito"</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> zařízení)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Rozhraní Bluetooth je vypnuto"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jas"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatické otáčení"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Otáčení je uzamčeno"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index e39cb58f5a5c..47a5c5bb8317 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skærmen er nu låst i stående retning."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Start Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flytilstand"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Oplader, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Opladet"</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> enheder)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth slået fra"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Lysstyrke"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatisk rotation"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation er låst"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"Mig"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
<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>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index e9eb46f9fb9a..791bfab4f084 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -152,13 +152,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <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>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Aufgeladen"</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> Geräte)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth aus"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helligkeit"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatisch drehen"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Drehung gesperrt"</string>
@@ -171,9 +171,10 @@
<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_no_network" msgid="2221993077220856376">"Kein Netzwerk"</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 Verbindung zur WLAN-Anzeige"</string>
+ <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"Keine WLAN-Anzeige"</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 c012d3c94f61..afce21206a17 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -152,13 +152,13 @@
<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">"Ενεργ. λειτ. dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Λειτουργία πτήσης"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Φόρτιση, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Χρεώθηκε"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> συσκευές)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Απενεργοποιημένο Bluetooth"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Φωτεινότητα"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Αυτόματη περιστροφή"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Η περιστροφή είναι κλειδωμένη"</string>
@@ -172,6 +172,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"Εγώ"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"Φωτεινότητα"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 4b3682acfa45..5bfe7ae00134 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Screen is locked in portrait orientation."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Start dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Aeroplane mode"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Charging, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Charged"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Devices)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Off"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brightness"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Rotate"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation Locked"</string>
@@ -168,10 +168,11 @@
<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">"Wifi"</string>
+ <string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No Network"</string>
- <string name="quick_settings_wifi_display_label" msgid="6653501376641018614">"Wifi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="6255615315258869136">"No Wifi Display Connection"</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_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 d9149042c8e8..ec8530928927 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Iniciar Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo de avión"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Cargando <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Cobrado"</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>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth desactivado"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillo"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Girar automáticamente"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotación bloqueada"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 268e934e1f6f..a82bc03ffb07 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Iniciar Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo avión"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Cargando (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Cargada"</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>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth desactivado"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillo"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Girar automáticamente"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotación bloqueada"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 7318dcbb5d95..d17cb02cfd5d 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekraan on lukustatud vertikaalsuunas."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Käivita unerežiim"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lennurežiim"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Laadimine, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Arve esitamine"</string>
+ <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Laetud"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> seadet)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth on väljas"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Heledus"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automaatne pööramine"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Pööramine lukus"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Heledus"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index ec3fcca88a87..4379dcb3eaeb 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -150,13 +150,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"اترنت"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"حالت هواپیما"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"در حال شارژ، <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"شارژ شد"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"بلوتوث"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"بلوتوث ( <xliff:g id="NUMBER">%d</xliff:g> دستگاه)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"بلوتوث خاموش"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"روشنایی"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"چرخش خودکار"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"چرخش قفل شد"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"من"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"روشنایی"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 7b65a382e86e..bc5596e5d606 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ruutu on lukittu pystysuuntaan."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Aloita unelmointi"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lentokonetila"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Ladataan (<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Täynnä"</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> laitetta)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth pois käytöstä"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kirkkaus"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automaattinen kääntö"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Kääntö lukittu"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Kirkkaus"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index d9b31ececfae..c3ac92735ea9 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"L\'écran est verrouillé en mode portrait."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Lancer fonct. Rêves"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode avion"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"En charge (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Chargée"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> appareils)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth désactivé"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosité"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotation automatique"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation verrouillée"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Luminosité"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 391162b84138..d1590fe0a5e5 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -150,13 +150,13 @@
<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">"dreams प्रारंभ करें"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"ईथरनेट"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"हवाई जहाज़ मोड"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"चार्ज हो रही है, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"चार्ज हो गई है"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> उपकरण)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth बंद"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"चमक"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"स्वत: रोटेट"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"रोटेशन लॉक किया गया"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"मुझे"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"चमक"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 0a8155e12c56..c56b20f7dd30 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaključan u portretnoj orijentaciji."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Počni sanjati"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Način rada u zrakoplovu"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Puni se, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Napunjena"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (broj uređaja: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth isključen"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Svjetlina"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatska rotacija"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotacija zaključana"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Svjetlina"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 33020e3519e2..48932b685ff9 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A képernyő zárolva van álló tájolásban."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Álmok indítása"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Repülőgép üzemmód"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Töltés (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Feltöltve"</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> eszköz)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth kikapcsolva"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Fényerő"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatikus forgatás"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Forgatás zárolva"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Fényerő"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index cdd50a70bacd..72bd126b4f80 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Layar dikunci dalam orientasi potret."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Mulai mimpi"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode pesawat"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Mengisi baterai, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Ditagih"</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> Perangkat)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Mati"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotasi Otomatis"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotasi Dikunci"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 816840e05dde..d6b96f67e7be 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Lo schermo è bloccato in orientamento verticale."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Avvia Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modalità aereo"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"In carica (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Carica"</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> dispositivi)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth non attivo"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosità"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotazione automatica"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotazione bloccata"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Luminosità"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index cf3cacb5f30f..150faaf50cda 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -150,13 +150,13 @@
<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">"הפעל את Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"מצב טיסה"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"טוען (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"מלאה"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth ‏(<xliff:g id="NUMBER">%d</xliff:g> מכשירים)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth מופסק"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"בהירות"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"סיבוב אוטומטי"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"סיבוב נעול"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"אני"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wifi"</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_brightness_dialog_title" msgid="8599674057673605368">"בהירות"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index b48f118954ed..222eda230188 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -152,13 +152,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"イーサネット"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"機内モード"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"充電中: <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充電完了"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth(端末数<xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth OFF"</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>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"画面の明るさ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 44e3eb57ea80..dca1e369da3a 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -150,13 +150,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"이더넷"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"비행기 모드"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"충전 중(<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"충전됨"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"블루투스"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"블루투스(<xliff:g id="NUMBER">%d</xliff:g>개의 기기)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"블루투스 사용 안함"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"밝기"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"자동 회전"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"회전 잠금"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"밝기"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index cb12c938bdd8..65cf268c4135 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Užrakintas ekranas yra vertikalios orientacijos."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Paleisti vizijas"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Eternetas"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lėktuvo režimas"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Įkraunama, <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Įkrauta"</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> įreng.)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"„Bluetooth“ išjungta"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Skaistis"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatiškai sukti"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Sukimas užrakintas"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Skaistis"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index c0139585fa9a..69e36f643616 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekrāns tagad ir bloķēts portreta orientācijā."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Palaist Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Tīkls Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lidojuma režīms"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Notiek uzlāde, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Uzlādēts"</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> ierīce(-es))"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth savienojums ir izslēgts."</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Spilgtums"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automātiska pagriešana"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Pagriešana bloķēta"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Spilgtums"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index a457573c2d84..791c77db1b21 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -150,21 +150,17 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrin dikunci dalam orientasi potret."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Mulakan mimpi"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mod kapal terbang"</string>
- <!-- no translation found for quick_settings_battery_charging_label (490074774465309209) -->
- <skip />
- <!-- no translation found for quick_settings_battery_charged_label (8865413079414246081) -->
- <skip />
+ <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Mengecas, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+ <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Sudah dicas"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <!-- no translation found for quick_settings_bluetooth_multiple_devices_label (3912245565613684735) -->
+ <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_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
- <!-- no translation found for quick_settings_rotation_unlocked_label (336054930362580584) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_locked_label (8058646447242565486) -->
- <skip />
+ <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Putar"</string>
+ <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Putaran Dikunci"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Kaedah Input"</string>
<string name="quick_settings_location_label" msgid="3292451598267467545">"Lokasi sedang digunakan"</string>
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Peranti media"</string>
@@ -175,6 +171,8 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 2505fe46c5de..cb8e55578d76 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skjermen er låst i stående retning."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Start drømmemodus"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flymodus"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Lader: <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Oppladet"</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> enheter)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth er slått av"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Lysstyrke"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatisk rotasjon"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotasjon er låst"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"Meg"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
<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>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 4db97fb8b4b6..0ec9c44631ff 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Het scherm is nu vergrendeld in staande stand."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Dromen starten"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Vliegmodus"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Opladen, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Opgeladen"</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> apparaten)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth uit"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helderheid"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatische rotatie"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotatie vergrendeld"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 1fcf6a8c7c6e..09e32e1a7066 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -149,14 +149,14 @@
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran jest zablokowany w orientacji poziomej."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran jest zablokowany w orientacji pionowej."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="870400522982252717">"Zacznij śnić"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="start_dreams" msgid="870400522982252717">"Włącz wygaszacz"</string>
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Tryb samolotowy"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Ładowanie (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Naładowana"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (urządzenia: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth wyłączony"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jasność"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Autoobracanie"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Obracanie jest zablokowane"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Jasność"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 9adc435b2333..5b362a719828 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"O ecrã está bloqueado na orientação vertical."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Iniciar sonhos"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo de avião"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"A carregar, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Carregada"</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>
+ <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">"Rodar Automaticamente"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotação Bloqueada"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Brilho"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 3f86560435d4..e2e5cd421bb5 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -152,13 +152,14 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A tela está bloqueada na orientação retrato."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Iniciar o Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo para avião"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Carregando, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<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_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>
@@ -172,6 +173,8 @@
<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_no_network" msgid="2221993077220856376">"Sem rede"</string>
+ <!-- no translation found for quick_settings_wifi_off_label (3343111275022978538) -->
+ <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>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index 2f3e11488b7f..ed3d869fcd16 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -282,6 +282,8 @@
<skip />
<!-- no translation found for quick_settings_bluetooth_multiple_devices_label (3912245565613684735) -->
<skip />
+ <!-- no translation found for quick_settings_bluetooth_off_label (8159652146149219937) -->
+ <skip />
<!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
<skip />
<!-- no translation found for quick_settings_rotation_unlocked_label (336054930362580584) -->
@@ -308,6 +310,8 @@
<skip />
<!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
<skip />
+ <!-- no translation found for quick_settings_wifi_off_label (3343111275022978538) -->
+ <skip />
<!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
<skip />
<!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 8bb108923ef5..e480b154eba4 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ecranul este blocat în orientarea de tip portret."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Porniţi Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mod Avion"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Se încarcă, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Încărcată"</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> dispozitive)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth dezactivat"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminozitate"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotire automată"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotire blocată"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Luminozitate"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 584a7ec02c91..333d22187f3f 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -152,13 +152,13 @@
<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>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим полета"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Идет зарядка (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Заряжено"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Устройства Bluetooth (<xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Модуль Bluetooth выключен"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркость"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автоповорот"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Поворот экрана заблокирован"</string>
@@ -172,6 +172,7 @@
<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_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>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркость"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index fd4fed7a222a..32c37c4dcded 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamknutá v orientácii na výšku."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Spustiť sny"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Režim V lietadle"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Nabíjanie, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Nabité"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Rozhranie Bluetooth (počet zariadení: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Rozhranie Bluetooth je vypnuté"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jas"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatické otáčanie"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Otáčanie uzamknuté"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 9ade3e67fc15..216b9d4eff34 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaklenjen v pokončni usmerjenosti."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Začni sanje"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Način za letalo"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Polnjenje, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Napolnjeno"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (št. naprav: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth izklopljen"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Svetlost"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Samodejno vrtenje"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Zaklenjeno vrtenje"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Svetlost"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 67001b2c0f2f..dcaf3bdfdc6c 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -150,13 +150,13 @@
<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">"Покрени Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Етернет"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим рада у авиону"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Пуњење, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Напуњено"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> уређаја)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth искључен"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Осветљеност"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Аутоматско ротирање"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Ротирање је закључано"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Осветљеност"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index fff36339b5b2..eb76ad346948 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildskärmens riktning är nu låst i stående format."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Starta drömmar"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flygplansläge"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Laddar, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Laddat"</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> enheter)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Inaktivera Bluetooth"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ljusstyrka"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotera automatiskt"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotationen har låsts"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"Jag"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"Wi-Fi"</string>
<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>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ljusstyrka"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index dfbe5e85c1ff..e29a085405d0 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -148,13 +148,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrini imefungwa katika uelekeo wa picha."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Anza ndoto"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modi ya ndege"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Inachaji, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Imechajiwa"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (Vifaa <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Imezimwa"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ung\'avu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Zungusha Otomatiki"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Mzunguko Umefungwa"</string>
@@ -168,6 +168,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Ung\'avu"</string>
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
index b6faff316636..a687571818a4 100644
--- a/packages/SystemUI/res/values-sw600dp/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
@@ -40,4 +40,8 @@
<!-- Size of application thumbnail -->
<dimen name="status_bar_recents_thumbnail_width">200dp</dimen>
<dimen name="status_bar_recents_thumbnail_height">177dp</dimen>
+
+ <!-- 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>
</resources>
diff --git a/packages/SystemUI/res/values-sw720dp/dimens.xml b/packages/SystemUI/res/values-sw720dp/dimens.xml
index a61fd680aafc..e42855c15578 100644
--- a/packages/SystemUI/res/values-sw720dp/dimens.xml
+++ b/packages/SystemUI/res/values-sw720dp/dimens.xml
@@ -39,7 +39,7 @@
<!-- Status bar panel bottom offset (height of status bar - overlap) -->
<dimen name="status_bar_panel_bottom_offset">36dp</dimen>
<!-- gap on either side of status bar notification icons -->
- <dimen name="status_bar_icon_padding">8dp</dimen>
+ <dimen name="status_bar_icon_padding">1dp</dimen>
<!-- The width of the notification panel window -->
<dimen name="notification_panel_width">512dp</dimen>
<!-- The minimum height of the notification panel window -->
@@ -75,8 +75,6 @@
<dimen name="status_bar_recents_text_fading_edge_length">20dip</dimen>
<!-- Size of fading edge for scrolling -->
<dimen name="status_bar_recents_scroll_fading_edge_length">10dip</dimen>
- <!-- Margin between recents container and glow on the right -->
- <dimen name="status_bar_recents_right_glow_margin">100dip</dimen>
<!-- Where to place the app icon over the thumbnail -->
<dimen name="status_bar_recents_app_icon_left_margin">0dp</dimen>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 7f8fe516a75d..506c9b2162ea 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -150,13 +150,13 @@
<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">"เริ่ม Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"อีเทอร์เน็ต"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"โหมดใช้งานบนเครื่องบิน"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"กำลังชาร์จ, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"ชาร์จแล้ว"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"บลูทูธ"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"บลูทูธ (<xliff:g id="NUMBER">%d</xliff:g> อุปกรณ์)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ปิดบลูทูธ"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"ความสว่าง"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"หมุนอัตโนมัติ"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"ล็อกการหมุนแล้ว"</string>
@@ -170,6 +170,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"ฉัน"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</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_brightness_dialog_title" msgid="8599674057673605368">"ความสว่าง"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 29e8d14bf397..7edd45ad78bb 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Naka-lock ang screen sa patayong oryentasyon."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Simulan panaginip"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Airplane mode"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Nagcha-charge, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Na-charge"</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> (na) Device)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Naka-off ang Bluetooth"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brightness"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"I-auto Rotate"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Naka-lock ang Pag-rotate"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index df144af353cc..a2c08a110e89 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran dikey yönde kilitlendi."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Rüyaları başlat"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Uçak modu"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Şarj oluyor, <xliff:g id="PERCENT">%%</xliff:g><xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Şarj oldu"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Cihaz)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Kapalı"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Parlaklık"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Otomatik Döndür"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Dönme Kilitlendi"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Parlaklık"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index efc7ea6c2c3e..a6cef76e24b3 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -150,13 +150,13 @@
<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">"Увімкнути Dreams"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим польоту"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Заряджається, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Заряджено"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (пристроїв: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth вимкнено"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яскравість"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Обертати автоматично"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Обертання заблоковано"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Яскравість"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 8e70ac3ee0c4..dcc472ab7ec8 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Màn hình hiện bị khóa theo hướng dọc."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Bắt đầu giấc mơ"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Chế độ trên máy bay"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Đang sạc, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Đã sạc"</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> thiết bị)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Đã tắt Bluetooth"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Độ sáng"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Tự động xoay"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Khóa xoay"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Độ sáng"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index cede04cfebc7..ded22f411b51 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -152,13 +152,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"屏幕锁定为纵向模式。"</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"果冻豆大乱舞"</string>
<string name="start_dreams" msgid="870400522982252717">"入梦"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"以太网"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飞行模式"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"正在充电 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充电完成"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"蓝牙"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"蓝牙(<xliff:g id="NUMBER">%d</xliff:g> 台设备)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"关闭蓝牙"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"自动旋转"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"已锁定旋转功能"</string>
@@ -172,6 +172,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index e593a3580d51..e1c032c3d711 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -152,13 +152,13 @@
<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">"啟動 Dream"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"乙太網路"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飛航模式"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"充電中 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充電完成"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"藍牙"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"藍牙 (<xliff:g id="NUMBER">%d</xliff:g> 個裝置)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"關閉藍牙"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"自動旋轉"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"已鎖定螢幕旋轉功能"</string>
@@ -172,6 +172,7 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"我"</string>
<string name="quick_settings_wifi_label" msgid="4393429107095001520">"WiFi"</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_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index d998bfb772a5..b1316bfdc467 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -150,13 +150,13 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Isikrini sikhiyelwe ngomumo we-portrait."</string>
<string name="jelly_bean_dream_name" msgid="5992026543636816792">"I-BeanFlinger"</string>
<string name="start_dreams" msgid="870400522982252717">"Qala amaphupho"</string>
- <!-- no translation found for ethernet_label (7967563676324087464) -->
- <skip />
+ <string name="ethernet_label" msgid="7967563676324087464">"I-Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Isimo sendiza"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Iyashaja <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Kushajiwe"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"I-Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"I-Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> amadivayisi)"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"I-Bluetooth ivaliwe"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ukugqama"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Ukuphendula ngokuzenzakalela"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Ukuphendula kukhiyiwe"</string>
@@ -170,6 +170,7 @@
<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_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_brightness_dialog_title" msgid="8599674057673605368">"Ukugqama"</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index e93e857a1f75..46c39037d456 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -107,6 +107,9 @@
<!-- Cap on overall resulting fling speed (s^-1) -->
<dimen name="fling_gesture_max_output_velocity">3000dp</dimen>
+ <!-- Minimum distance a fling must travel (anti-jitter) -->
+ <dimen name="fling_gesture_min_dist">10dp</dimen>
+
<!-- Minimum fraction of the display a gesture must travel, at any velocity, to qualify as a
collapse request -->
<item type="dimen" name="collapse_min_display_fraction">10%</item>
@@ -166,8 +169,13 @@
<integer name="notification_panel_layout_gravity">0x37</integer>
<integer name="settings_panel_layout_gravity">0x37</integer>
- <!-- Quick settings panels minimum fling open target width. -->
- <dimen name="settings_panel_fling_gutter">90dp</dimen>
+ <!-- Fraction of the status bar that, when dragged, will produce the quick settings panel
+ instead of the notification panel. See also @dimen/settings_panel_dragzone_min.
+ If zero, the settings panel will not be directly draggable from the status bar. -->
+ <item type="dimen" name="settings_panel_dragzone_fraction">0%</item>
+
+ <!-- Quick settings dragzone, if used, should be at least this big (may be zero). -->
+ <dimen name="settings_panel_dragzone_min">100dp</dimen>
<!-- Height of the carrier/wifi name label -->
<dimen name="carrier_label_height">24dp</dimen>
@@ -179,6 +187,6 @@
<dimen name="quick_settings_cell_height">110dp</dimen>
<!-- The padding between each tile within the QuickSettings layout -->
- <dimen name="quick_settings_cell_gap">5dp</dimen>
+ <dimen name="quick_settings_cell_gap">4dp</dimen>
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 9ad2d5b4ac24..58f749a4ade0 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -265,7 +265,7 @@
<!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_wifi_three_bars">Wi-Fi three bars.</string>
<!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_wifi_signal_full">WiFi signal full.</string>
+ <string name="accessibility_wifi_signal_full">Wi-Fi signal full.</string>
<!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_no_wimax">No WiMAX.</string>
@@ -439,15 +439,17 @@
<!-- QuickSettings: User [CHAR LIMIT=NONE] -->
<string name="quick_settings_user_label">Me</string>
<!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
- <string name="quick_settings_wifi_label">Wifi</string>
+ <string name="quick_settings_wifi_label">Wi-Fi</string>
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_not_connected">Not Connected</string>
<!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
<string name="quick_settings_wifi_no_network">No Network</string>
<!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
- <string name="quick_settings_wifi_off_label">Wifi Off</string>
+ <string name="quick_settings_wifi_off_label">Wi-Fi Off</string>
<!-- QuickSettings: Wifi display [CHAR LIMIT=NONE] -->
- <string name="quick_settings_wifi_display_label">Wifi Display</string>
+ <string name="quick_settings_wifi_display_label">Wi-Fi Display</string>
<!-- QuickSettings: Wifi display [CHAR LIMIT=NONE] -->
- <string name="quick_settings_wifi_display_no_connection_label">No Wifi Display Connection</string>
+ <string name="quick_settings_wifi_display_no_connection_label">No Wi-Fi Display Connection</string>
<!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
<string name="quick_settings_brightness_dialog_title">Brightness</string>
<!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index f6fe8d0e0571..d666fc34c986 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -80,7 +80,7 @@
<item name="android:drawablePadding">12dp</item>
<item name="android:textSize">12dp</item>
<item name="android:textStyle">normal</item>
- <item name="android:textColor">#ff8d908c</item>
+ <item name="android:textColor">#CCCCCC</item>
<item name="android:textAllCaps">true</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">marquee</item>
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
index 281f25f6c472..b0879fce7c24 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.animateCollapse(CommandQueue.FLAG_EXCLUDE_SEARCH_PANEL);
+ mBar.animateCollapseNotifications(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.animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ mBar.animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
} else {
setVisibility(View.INVISIBLE);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
index 291f38c2acfa..7ff7b17e635a 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
@@ -120,7 +120,7 @@ public class RecentsActivity extends Activity {
if (mRecentsPanel != null) {
final SystemUIApplication app = (SystemUIApplication) getApplication();
final RecentTasksLoader recentTasksLoader = app.getRecentTasksLoader();
- TaskDescription firstTask = recentTasksLoader.getFirstTask();
+ TaskDescription firstTask = mRecentsPanel.getBottomTask();
if (firstTask != null && mRecentsPanel.simulateClick(firstTask)) {
// recents panel will take care of calling show(false);
return;
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 5296ae9ef999..005b4a2ac8da 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -488,6 +488,24 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
showIfReady();
}
+ public TaskDescription getBottomTask() {
+ if (mRecentsContainer != null) {
+ ViewGroup container = mRecentsContainer;
+ if (container instanceof RecentsScrollView) {
+ container = (ViewGroup) container.findViewById(
+ R.id.recents_linear_layout);
+ }
+ if (container.getChildCount() > 0) {
+ View v = container.getChildAt(container.getChildCount() - 1);
+ if (v.getTag() instanceof ViewHolder) {
+ ViewHolder h = (ViewHolder)v.getTag();
+ return h.taskDescription;
+ }
+ }
+ }
+ return null;
+ }
+
public void clearRecentTasksList() {
// Clear memory used by screenshots
if (mRecentTaskDescriptions != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index ec67c15c7152..d8bbee9f7b44 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -150,8 +150,8 @@ public abstract class BaseStatusBar extends SystemUI implements
private ContentObserver mProvisioningObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
- final boolean provisioned = 0 != Settings.Secure.getInt(
- mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0);
+ final boolean provisioned = 0 != Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0);
if (provisioned != mDeviceProvisioned) {
mDeviceProvisioned = provisioned;
updateNotificationIcons();
@@ -184,7 +184,7 @@ public abstract class BaseStatusBar extends SystemUI implements
if (isActivity && handled) {
// close the shade if it was open
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
visibilityChanged(false);
}
return handled;
@@ -198,7 +198,7 @@ public abstract class BaseStatusBar extends SystemUI implements
mProvisioningObserver.onChange(false); // set up
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED), true,
+ Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), true,
mProvisioningObserver);
mBarService = IStatusBarService.Stub.asInterface(
@@ -342,7 +342,8 @@ public abstract class BaseStatusBar extends SystemUI implements
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", packageName, null));
intent.setComponent(intent.resolveActivity(mContext.getPackageManager()));
- TaskStackBuilder.create(mContext).addNextIntentWithParentStack(intent).startActivities();
+ TaskStackBuilder.create(mContext).addNextIntentWithParentStack(intent).startActivities(
+ null, UserHandle.CURRENT);
}
protected View.OnLongClickListener getNotificationLongClicker() {
@@ -360,7 +361,7 @@ public abstract class BaseStatusBar extends SystemUI implements
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.notification_inspect_item) {
startApplicationDetailsActivity(packageNameF);
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
} else {
return false;
}
@@ -792,7 +793,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
// close the shade if it was open
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
visibilityChanged(false);
// If this click was on the intruder alert, hide that instead
@@ -859,6 +860,7 @@ public abstract class BaseStatusBar extends SystemUI implements
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
+ notification.user,
notification.notification.icon,
notification.notification.iconLevel,
notification.notification.number,
@@ -1011,6 +1013,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
// Update the icon.
final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
+ notification.user,
notification.notification.icon, notification.notification.iconLevel,
notification.notification.number,
notification.notification.tickerText);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index a00d95a97a5e..39e49b8d9df1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -33,38 +33,30 @@ import com.android.internal.statusbar.StatusBarNotification;
* are coalesced, note that they are all idempotent.
*/
public class CommandQueue extends IStatusBar.Stub {
- private static final String TAG = "StatusBar.CommandQueue";
-
private static final int INDEX_MASK = 0xffff;
private static final int MSG_SHIFT = 16;
private static final int MSG_MASK = 0xffff << MSG_SHIFT;
-
- private static final int MSG_ICON = 1 << MSG_SHIFT;
private static final int OP_SET_ICON = 1;
private static final int OP_REMOVE_ICON = 2;
- private static final int MSG_ADD_NOTIFICATION = 2 << MSG_SHIFT;
- private static final int MSG_UPDATE_NOTIFICATION = 3 << MSG_SHIFT;
- private static final int MSG_REMOVE_NOTIFICATION = 4 << MSG_SHIFT;
-
- private static final int MSG_DISABLE = 5 << MSG_SHIFT;
-
- private static final int MSG_SET_VISIBILITY = 6 << MSG_SHIFT;
- private static final int OP_EXPAND = 1;
- private static final int OP_COLLAPSE = 2;
-
- private static final int MSG_SET_SYSTEMUI_VISIBILITY = 7 << MSG_SHIFT;
-
- private static final int MSG_TOP_APP_WINDOW_CHANGED = 8 << MSG_SHIFT;
- private static final int MSG_SHOW_IME_BUTTON = 9 << MSG_SHIFT;
- private static final int MSG_SET_HARD_KEYBOARD_STATUS = 10 << MSG_SHIFT;
-
- private static final int MSG_TOGGLE_RECENT_APPS = 11 << MSG_SHIFT;
- private static final int MSG_PRELOAD_RECENT_APPS = 12 << MSG_SHIFT;
- private static final int MSG_CANCEL_PRELOAD_RECENT_APPS = 13 << MSG_SHIFT;
-
- private static final int MSG_SET_NAVIGATION_ICON_HINTS = 14 << MSG_SHIFT;
+ private static final int MSG_ICON = 1 << MSG_SHIFT;
+ private static final int MSG_ADD_NOTIFICATION = 2 << MSG_SHIFT;
+ private static final int MSG_UPDATE_NOTIFICATION = 3 << MSG_SHIFT;
+ 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;
public static final int FLAG_EXCLUDE_NONE = 0;
public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
@@ -94,8 +86,10 @@ 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 animateExpand();
- public void animateCollapse(int flags);
+ public void animateExpandNotifications();
+ public void animateCollapseNotifications(int flags);
+ public void animateExpandQuickSettings();
+ public void animateCollapseQuickSettings();
public void setSystemUiVisibility(int vis, int mask);
public void topAppWindowChanged(boolean visible);
public void setImeWindowStatus(IBinder token, int vis, int backDisposition);
@@ -160,21 +154,31 @@ public class CommandQueue extends IStatusBar.Stub {
}
}
- public void animateExpand() {
+ public void animateExpandNotifications() {
+ synchronized (mList) {
+ mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS);
+ mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS);
+ }
+ }
+
+ public void animateCollapseNotifications() {
synchronized (mList) {
- mHandler.removeMessages(MSG_SET_VISIBILITY);
- mHandler.obtainMessage(MSG_SET_VISIBILITY, OP_EXPAND, 0, null).sendToTarget();
+ mHandler.removeMessages(MSG_COLLAPSE_NOTIFICATIONS);
+ mHandler.sendEmptyMessage(MSG_COLLAPSE_NOTIFICATIONS);
}
}
- public void animateCollapse() {
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ public void animateExpandQuickSettings() {
+ synchronized (mList) {
+ mHandler.removeMessages(MSG_EXPAND_QUICK_SETTINGS);
+ mHandler.sendEmptyMessage(MSG_EXPAND_QUICK_SETTINGS);
+ }
}
- public void animateCollapse(int flags) {
+ public void animateCollapseQuickSettings() {
synchronized (mList) {
- mHandler.removeMessages(MSG_SET_VISIBILITY);
- mHandler.obtainMessage(MSG_SET_VISIBILITY, OP_COLLAPSE, flags, null).sendToTarget();
+ mHandler.removeMessages(MSG_COLLAPSE_QUICK_SETTINGS);
+ mHandler.sendEmptyMessage(MSG_COLLAPSE_QUICK_SETTINGS);
}
}
@@ -284,12 +288,17 @@ public class CommandQueue extends IStatusBar.Stub {
case MSG_DISABLE:
mCallbacks.disable(msg.arg1);
break;
- case MSG_SET_VISIBILITY:
- if (msg.arg1 == OP_EXPAND) {
- mCallbacks.animateExpand();
- } else {
- mCallbacks.animateCollapse(msg.arg2);
- }
+ case MSG_EXPAND_NOTIFICATIONS:
+ mCallbacks.animateExpandNotifications();
+ break;
+ case MSG_COLLAPSE_NOTIFICATIONS:
+ mCallbacks.animateCollapseNotifications(0);
+ break;
+ case MSG_EXPAND_QUICK_SETTINGS:
+ mCallbacks.animateExpandQuickSettings();
+ break;
+ case MSG_COLLAPSE_QUICK_SETTINGS:
+ mCallbacks.animateCollapseQuickSettings();
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 6a9e8386b11e..5e810ba40f72 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -165,7 +165,8 @@ public class StatusBarIconView extends AnimatedImageView {
if (icon.iconPackage != null) {
try {
- r = context.getPackageManager().getResourcesForApplication(icon.iconPackage);
+ r = context.getPackageManager().getResourcesForApplicationAsUser(icon.iconPackage,
+ icon.user.getIdentifier());
} 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/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index 9a3648fea67e..f6236924576b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -6,6 +6,7 @@ import android.content.Context;
import android.util.AttributeSet;
import android.util.Slog;
import android.view.MotionEvent;
+import android.view.View;
import android.widget.FrameLayout;
public class PanelBar extends FrameLayout {
@@ -101,6 +102,7 @@ public class PanelBar extends FrameLayout {
PanelView fullyOpenedPanel = null;
LOG("panelExpansionChanged: start state=%d panel=%s", mState, panel.getName());
for (PanelView pv : mPanels) {
+ final boolean visible = pv.getVisibility() == View.VISIBLE;
// adjust any other panels that may be partially visible
if (pv.getExpandedHeight() > 0f) {
if (mState == STATE_CLOSED) {
@@ -116,6 +118,11 @@ public class PanelBar extends FrameLayout {
pv.setExpandedFraction(1f-frac);
}
}
+ if (pv.getExpandedHeight() > 0f) {
+ if (!visible) pv.setVisibility(View.VISIBLE);
+ } else {
+ if (visible) pv.setVisibility(View.GONE);
+ }
}
if (fullyOpenedPanel != null && !mTracking) {
go(STATE_OPEN);
@@ -138,6 +145,7 @@ public class PanelBar extends FrameLayout {
} else {
pv.setExpandedFraction(0); // just in case
}
+ pv.setVisibility(View.GONE);
}
if (!waiting) {
// it's possible that nothing animated, so we replicate the termination
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 57528a5e95b3..45a107d8cc35 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -37,6 +37,8 @@ public class PanelView extends FrameLayout {
private float mExpandMinDisplayFraction; // classic value: 0.5 (drag open halfway to expand)
private float mFlingGestureMaxXVelocityPx; // classic value: 150px/s
+ private float mFlingGestureMinDistPx;
+
private float mExpandAccelPx; // classic value: 2000px/s/s
private float mCollapseAccelPx; // classic value: 2000px/s/s (will be negated to collapse "up")
@@ -78,6 +80,8 @@ public class PanelView extends FrameLayout {
private float mVel, mAccel;
private int mFullHeight = 0;
private String mViewName;
+ protected float mInitialTouchY;
+ protected float mFinalTouchY;
private void animationTick(long dtms) {
if (!mTimeAnimator.isStarted()) {
@@ -88,7 +92,14 @@ public class PanelView extends FrameLayout {
mTimeAnimator.start();
mRubberbanding = STRETCH_PAST_CONTENTS && mExpandedHeight > getFullHeight();
- mClosing = (mExpandedHeight > 0 && mVel < 0) || mRubberbanding;
+ if (mRubberbanding) {
+ mClosing = true;
+ } else if (mVel == 0) {
+ // if the panel is less than halfway open, close it
+ mClosing = (mFinalTouchY / getFullHeight()) < 0.5f;
+ } else {
+ mClosing = mExpandedHeight > 0 && mVel < 0;
+ }
} else if (dtms > 0) {
final float dt = dtms * 0.001f; // ms -> s
LOG("tick: v=%.2fpx/s dt=%.4fs", mVel, dt);
@@ -159,6 +170,8 @@ public class PanelView extends FrameLayout {
mFlingExpandMinVelocityPx = res.getDimension(R.dimen.fling_expand_min_velocity);
mFlingCollapseMinVelocityPx = res.getDimension(R.dimen.fling_collapse_min_velocity);
+ mFlingGestureMinDistPx = res.getDimension(R.dimen.fling_gesture_min_dist);
+
mCollapseMinDisplayFraction = res.getFraction(R.dimen.collapse_min_display_fraction, 1, 1);
mExpandMinDisplayFraction = res.getFraction(R.dimen.expand_min_display_fraction, 1, 1);
@@ -207,6 +220,7 @@ public class PanelView extends FrameLayout {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mTracking = true;
+ mInitialTouchY = y;
mVelocityTracker = VelocityTracker.obtain();
trackMovement(event);
mBar.onTrackingStarted(PanelView.this);
@@ -223,6 +237,7 @@ public class PanelView extends FrameLayout {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
+ mFinalTouchY = y;
mTracking = false;
mBar.onTrackingStopped(PanelView.this);
trackMovement(event);
@@ -243,11 +258,21 @@ public class PanelView extends FrameLayout {
if (vel > mFlingGestureMaxOutputVelocityPx) {
vel = mFlingGestureMaxOutputVelocityPx;
}
+
+ // if you've barely moved your finger, we treat the velocity as 0
+ // preventing spurious flings due to touch screen jitter
+ final float deltaY = (float)Math.abs(mFinalTouchY - mInitialTouchY);
+ if (deltaY < mFlingGestureMinDistPx
+ || vel < mFlingGestureMinDistPx) {
+ vel = 0;
+ }
+
if (negative) {
vel = -vel;
}
- LOG("gesture: vraw=(%f,%f) vnorm=(%f,%f) vlinear=%f",
+ LOG("gesture: dy=%f vraw=(%f,%f) vnorm=(%f,%f) vlinear=%f",
+ deltaY,
mVelocityTracker.getXVelocity(),
mVelocityTracker.getYVelocity(),
xVel, yVel,
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 7e44b16a84ac..e6aa632eeb1a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.phone;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
-import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
@@ -52,7 +51,6 @@ import android.util.Log;
import android.util.Slog;
import android.view.Display;
import android.view.Gravity;
-import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
@@ -77,7 +75,6 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.GestureRecorder;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.NotificationData.Entry;
-import com.android.systemui.statusbar.RotationToggle;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -153,11 +150,18 @@ public class PhoneStatusBar extends BaseStatusBar {
int mPixelFormat;
Object mQueueLock = new Object();
- // icons
- LinearLayout mIcons;
+ // viewgroup containing the normal contents of the statusbar
+ LinearLayout mStatusBarContents;
+
+ // right-hand icons
+ LinearLayout mSystemIconArea;
+
+ // left-hand icons
+ LinearLayout mStatusIcons;
+ // the icons themselves
IconMerger mNotificationIcons;
+ // [+>
View mMoreIcon;
- LinearLayout mStatusIcons;
// expanded notifications
PanelView mNotificationPanel; // the sliding/resizing panel within the notification window
@@ -226,8 +230,8 @@ public class PhoneStatusBar extends BaseStatusBar {
int[] mAbsPos = new int[2];
Runnable mPostCollapseCleanup = null;
- private AnimatorSet mLightsOutAnimation;
- private AnimatorSet mLightsOnAnimation;
+ private Animator mLightsOutAnimation;
+ private Animator mLightsOnAnimation;
// for disabling the status bar
int mDisabled = 0;
@@ -245,9 +249,9 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void onAnimationEnd(Animator animation) {
// double-check to avoid races
- if (mIcons.getAlpha() == 0) {
+ if (mStatusBarContents.getAlpha() == 0) {
Slog.d(TAG, "makeIconsInvisible");
- mIcons.setVisibility(View.INVISIBLE);
+ mStatusBarContents.setVisibility(View.INVISIBLE);
}
}
};
@@ -291,7 +295,7 @@ public class PhoneStatusBar extends BaseStatusBar {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (mExpandedVisible && !mAnimating) {
- animateCollapse();
+ animateCollapseNotifications();
}
}
return mStatusBarWindow.onTouchEvent(event);
@@ -307,8 +311,7 @@ public class PhoneStatusBar extends BaseStatusBar {
mNotificationPanelIsFullScreenWidth =
(mNotificationPanel.getLayoutParams().width == ViewGroup.LayoutParams.MATCH_PARENT);
mNotificationPanel.setSystemUiVisibility(
- View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER
- | (mNotificationPanelIsFullScreenWidth ? 0 : View.STATUS_BAR_DISABLE_SYSTEM_INFO));
+ View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER | View.STATUS_BAR_DISABLE_NOTIFICATION_ICONS);
if (!ActivityManager.isHighEndGfx()) {
mStatusBarWindow.setBackground(null);
@@ -343,10 +346,12 @@ public class PhoneStatusBar extends BaseStatusBar {
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
+
+ mSystemIconArea = (LinearLayout) mStatusBarView.findViewById(R.id.system_icon_area);
mStatusIcons = (LinearLayout)mStatusBarView.findViewById(R.id.statusIcons);
mNotificationIcons = (IconMerger)mStatusBarView.findViewById(R.id.notificationIcons);
mNotificationIcons.setOverflowIndicator(mMoreIcon);
- mIcons = (LinearLayout)mStatusBarView.findViewById(R.id.icons);
+ mStatusBarContents = (LinearLayout)mStatusBarView.findViewById(R.id.status_bar_contents);
mTickerView = mStatusBarView.findViewById(R.id.ticker);
mPile = (NotificationRowLayout)mStatusBarWindow.findViewById(R.id.latestItems);
@@ -431,6 +436,8 @@ public class PhoneStatusBar extends BaseStatusBar {
mSettingsPanel.setService(this);
mSettingsPanel.setup(mNetworkController, mBluetoothController, mBatteryController,
mLocationController);
+ mSettingsPanel.setSystemUiVisibility(
+ View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER | View.STATUS_BAR_DISABLE_SYSTEM_INFO);
if (!ActivityManager.isHighEndGfx()) {
mSettingsPanel.setBackground(new FastColorDrawable(context.getResources().getColor(
@@ -770,7 +777,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
if (CLOSE_PANEL_WHEN_EMPTIED && mNotificationData.size() == 0 && !mAnimating) {
- animateCollapse();
+ animateCollapseNotifications();
}
}
@@ -1016,22 +1023,18 @@ public class PhoneStatusBar extends BaseStatusBar {
Slog.d(TAG, flagdbg.toString());
if ((diff & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) {
- mIcons.animate().cancel();
+ mSystemIconArea.animate().cancel();
if ((state & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) {
- if (mTicking) {
- mTicker.halt();
- }
- mIcons.animate()
+ mSystemIconArea.animate()
.alpha(0f)
.translationY(mNaturalBarHeight*0.5f)
- //.setStartDelay(100)
.setDuration(175)
.setInterpolator(new DecelerateInterpolator(1.5f))
.setListener(mMakeIconsInvisible)
.start();
} else {
- mIcons.setVisibility(View.VISIBLE);
- mIcons.animate()
+ mSystemIconArea.setVisibility(View.VISIBLE);
+ mSystemIconArea.animate()
.alpha(1f)
.translationY(0)
.setStartDelay(0)
@@ -1047,7 +1050,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
if ((state & StatusBarManager.DISABLE_EXPAND) != 0) {
- animateCollapse();
+ animateCollapseNotifications();
}
}
@@ -1068,13 +1071,24 @@ public class PhoneStatusBar extends BaseStatusBar {
if ((state & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
if (mTicking) {
mTicker.halt();
- } else {
- setNotificationIconVisibility(false, com.android.internal.R.anim.fade_out);
}
+
+ mNotificationIcons.animate()
+ .alpha(0f)
+ .translationY(mNaturalBarHeight*0.5f)
+ .setDuration(175)
+ .setInterpolator(new DecelerateInterpolator(1.5f))
+ .setListener(mMakeIconsInvisible)
+ .start();
} else {
- if (!mExpandedVisible) {
- setNotificationIconVisibility(true, com.android.internal.R.anim.fade_in);
- }
+ mNotificationIcons.setVisibility(View.VISIBLE);
+ mNotificationIcons.animate()
+ .alpha(1f)
+ .translationY(0)
+ .setStartDelay(0)
+ .setInterpolator(new DecelerateInterpolator(1.5f))
+ .setDuration(175)
+ .start();
}
} else if ((diff & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) {
if (mTicking && (state & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) {
@@ -1096,10 +1110,10 @@ public class PhoneStatusBar extends BaseStatusBar {
super.handleMessage(m);
switch (m.what) {
case MSG_OPEN_NOTIFICATION_PANEL:
- animateExpand();
+ animateExpandNotifications();
break;
case MSG_CLOSE_NOTIFICATION_PANEL:
- animateCollapse();
+ animateCollapseNotifications();
break;
case MSG_SHOW_INTRUDER:
setIntruderAlertVisibility(true);
@@ -1152,11 +1166,11 @@ public class PhoneStatusBar extends BaseStatusBar {
visibilityChanged(true);
}
- public void animateCollapse() {
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ public void animateCollapseNotifications() {
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
}
- public void animateCollapse(int flags) {
+ public void animateCollapseNotifications(int flags) {
if (SPEW) {
Slog.d(TAG, "animateCollapse():"
+ " mExpandedVisible=" + mExpandedVisible
@@ -1181,7 +1195,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpand() {
+ public void animateExpandNotifications() {
if (SPEW) Slog.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
return ;
@@ -1192,6 +1206,22 @@ public class PhoneStatusBar extends BaseStatusBar {
if (false) postStartTracing();
}
+ @Override
+ public void animateExpandQuickSettings() {
+ if (SPEW) Slog.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
+ if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
+ return;
+ }
+
+ mSettingsPanel.expand();
+
+ if (false) postStartTracing();
+ }
+
+ public void animateCollapseQuickSettings() {
+ mStatusBarView.collapseAllPanels(true);
+ }
+
void makeExpandedInvisible() {
if (SPEW) Slog.d(TAG, "makeExpandedInvisible: mExpandedVisible=" + mExpandedVisible
+ " mExpandedVisible=" + mExpandedVisible);
@@ -1321,7 +1351,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) {
- animateCollapse();
+ animateCollapseNotifications();
if (mTicking) {
mTicker.halt();
}
@@ -1340,30 +1370,11 @@ public class PhoneStatusBar extends BaseStatusBar {
private void setStatusBarLowProfile(boolean lightsOut) {
if (mLightsOutAnimation == null) {
- final View notifications = mStatusBarView.findViewById(R.id.notification_icon_area);
- final View systemIcons = mStatusBarView.findViewById(R.id.statusIcons);
- final View signal = mStatusBarView.findViewById(R.id.signal_cluster);
- final View battery = mStatusBarView.findViewById(R.id.battery);
- final View clock = mStatusBarView.findViewById(R.id.clock);
-
- mLightsOutAnimation = new AnimatorSet();
- mLightsOutAnimation.playTogether(
- ObjectAnimator.ofFloat(notifications, View.ALPHA, 0),
- ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 0),
- ObjectAnimator.ofFloat(signal, View.ALPHA, 0),
- ObjectAnimator.ofFloat(battery, View.ALPHA, 0.5f),
- ObjectAnimator.ofFloat(clock, View.ALPHA, 0.5f)
- );
+ mLightsOutAnimation = ObjectAnimator.ofFloat(mStatusBarContents, View.ALPHA, 0);
mLightsOutAnimation.setDuration(750);
mLightsOnAnimation = new AnimatorSet();
- mLightsOnAnimation.playTogether(
- ObjectAnimator.ofFloat(notifications, View.ALPHA, 1),
- ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 1),
- ObjectAnimator.ofFloat(signal, View.ALPHA, 1),
- ObjectAnimator.ofFloat(battery, View.ALPHA, 1),
- ObjectAnimator.ofFloat(clock, View.ALPHA, 1)
- );
+ mLightsOnAnimation = ObjectAnimator.ofFloat(mStatusBarContents, View.ALPHA, 1);
mLightsOnAnimation.setDuration(250);
}
@@ -1453,25 +1464,25 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void tickerStarting() {
mTicking = true;
- mIcons.setVisibility(View.GONE);
+ mStatusBarContents.setVisibility(View.GONE);
mTickerView.setVisibility(View.VISIBLE);
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.push_up_in, null));
- mIcons.startAnimation(loadAnim(com.android.internal.R.anim.push_up_out, null));
+ mStatusBarContents.startAnimation(loadAnim(com.android.internal.R.anim.push_up_out, null));
}
@Override
public void tickerDone() {
- mIcons.setVisibility(View.VISIBLE);
+ mStatusBarContents.setVisibility(View.VISIBLE);
mTickerView.setVisibility(View.GONE);
- mIcons.startAnimation(loadAnim(com.android.internal.R.anim.push_down_in, null));
+ mStatusBarContents.startAnimation(loadAnim(com.android.internal.R.anim.push_down_in, null));
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.push_down_out,
mTickingDoneListener));
}
public void tickerHalting() {
- mIcons.setVisibility(View.VISIBLE);
+ mStatusBarContents.setVisibility(View.VISIBLE);
mTickerView.setVisibility(View.GONE);
- mIcons.startAnimation(loadAnim(com.android.internal.R.anim.fade_in, null));
+ mStatusBarContents.startAnimation(loadAnim(com.android.internal.R.anim.fade_in, null));
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.fade_out,
mTickingDoneListener));
}
@@ -1649,40 +1660,6 @@ public class PhoneStatusBar extends BaseStatusBar {
String.format("%dx%d", mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels));
}
- void performDisableActions(int net) {
- int old = mDisabled;
- int diff = net ^ old;
- mDisabled = net;
-
- // act accordingly
- if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
- if ((net & StatusBarManager.DISABLE_EXPAND) != 0) {
- Slog.d(TAG, "DISABLE_EXPAND: yes");
- animateCollapse();
- }
- }
- if ((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
- if ((net & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
- Slog.d(TAG, "DISABLE_NOTIFICATION_ICONS: yes");
- if (mTicking) {
- mNotificationIcons.setVisibility(View.INVISIBLE);
- mTicker.halt();
- } else {
- setNotificationIconVisibility(false, com.android.internal.R.anim.fade_out);
- }
- } else {
- Slog.d(TAG, "DISABLE_NOTIFICATION_ICONS: no");
- if (!mExpandedVisible) {
- setNotificationIconVisibility(true, com.android.internal.R.anim.fade_in);
- }
- }
- } else if ((diff & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) {
- if (mTicking && (net & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) {
- mTicker.halt();
- }
- }
- }
-
private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
public void onClick(View v) {
synchronized (mNotificationData) {
@@ -1700,7 +1677,7 @@ public class PhoneStatusBar extends BaseStatusBar {
}
}
if (snapshot.isEmpty()) {
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
return;
}
new Thread(new Runnable() {
@@ -1751,7 +1728,7 @@ public class PhoneStatusBar extends BaseStatusBar {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
}
}, totalDelay + 225);
}
@@ -1773,7 +1750,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));
- animateCollapse();
+ animateCollapseNotifications();
}
};
@@ -1789,7 +1766,7 @@ public class PhoneStatusBar extends BaseStatusBar {
flags |= CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL;
}
}
- animateCollapse(flags);
+ animateCollapseNotifications(flags);
}
else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
// no waiting!
@@ -1814,7 +1791,7 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void userSwitched(int newUserId) {
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
- animateCollapse();
+ animateCollapseNotifications();
updateNotificationIcons();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index 95b618ad0ce9..6517e7cfa634 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -21,6 +21,7 @@ import android.app.StatusBarManager;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
@@ -46,8 +47,9 @@ public class PhoneStatusBarView extends PanelBar {
PhoneStatusBar mBar;
int mScrimColor;
- float mMinFlingGutter;
- float mNotificationWidth;
+ float mSettingsPanelDragzoneFrac;
+ float mSettingsPanelDragzoneMin;
+
boolean mFullWidthNotifications;
PanelView mFadingPanel = null;
PanelView mNotificationPanel, mSettingsPanel;
@@ -64,13 +66,14 @@ public class PhoneStatusBarView extends PanelBar {
public void onAttachedToWindow() {
Resources res = getContext().getResources();
mScrimColor = res.getColor(R.color.notification_panel_scrim_color);
- mMinFlingGutter = res.getDimension(R.dimen.settings_panel_fling_gutter);
- mFullWidthNotifications = false;
+ mSettingsPanelDragzoneMin = res.getDimension(R.dimen.settings_panel_dragzone_min);
try {
- mNotificationWidth = res.getDimension(R.dimen.notification_panel_width);
- } catch (Resources.NotFoundException ex) {
- mFullWidthNotifications = true;
+ mSettingsPanelDragzoneFrac = res.getFraction(R.dimen.settings_panel_dragzone_fraction, 1, 1);
+ } catch (NotFoundException ex) {
+ mSettingsPanelDragzoneFrac = 0f;
}
+
+ mFullWidthNotifications = mSettingsPanelDragzoneFrac <= 0f;
}
@Override
@@ -105,19 +108,30 @@ public class PhoneStatusBarView extends PanelBar {
@Override
public PanelView selectPanelForTouchX(float x) {
- // We split the status bar into thirds: the left 2/3 are for notifications, and the
+ if (mFullWidthNotifications) {
+ if (DEBUG) {
+ Slog.v(TAG, "notif frac=" + mNotificationPanel.getExpandedFraction());
+ }
+ return (mNotificationPanel.getExpandedFraction() == 1.0f)
+ ? mSettingsPanel : mNotificationPanel;
+ }
+
+ // We split the status bar into thirds: the left 2/3 are for notifications, and the
// right 1/3 for quick settings. If you pull the status bar down a second time you'll
// toggle panels no matter where you pull it down.
+
final float w = (float) getMeasuredWidth();
- final float gutter = w - mNotificationWidth;
- final boolean useGutter = !mFullWidthNotifications && gutter > mMinFlingGutter;
- final float threshold = 1.0f - (gutter / w);
- final float f = x / w;
- if ((useGutter && f > threshold && mSettingsPanel.getExpandedFraction() != 1.0f) ||
- mNotificationPanel.getExpandedFraction() == 1.0f) {
- return mSettingsPanel;
+ float region = (w * mSettingsPanelDragzoneFrac);
+
+ if (DEBUG) {
+ Slog.v(TAG, String.format(
+ "w=%.1f frac=%.3f region=%.1f min=%.1f x=%.1f w-x=%.1f",
+ w, mSettingsPanelDragzoneFrac, region, mSettingsPanelDragzoneMin, x, (w-x)));
}
- return mNotificationPanel;
+
+ if (region < mSettingsPanelDragzoneMin) region = mSettingsPanelDragzoneMin;
+
+ return (w - x < region) ? mSettingsPanel : mNotificationPanel;
}
@Override
@@ -159,7 +173,7 @@ public class PhoneStatusBarView extends PanelBar {
Slog.v(TAG, "panelExpansionChanged: f=" + frac);
}
- if (mFadingPanel == pv
+ if (mFadingPanel == pv
&& mScrimColor != 0 && ActivityManager.isHighEndGfx()) {
// woo, special effects
final float k = (float)(1f-0.5f*(1f-Math.cos(3.14159f * Math.pow(1f-frac, 2.2f))));
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 160cf8fd25f7..7077018af837 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java
@@ -228,7 +228,7 @@ class QuickSettings {
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
- getService().animateCollapse();
+ getService().animateCollapseNotifications();
}
private void addUserTiles(ViewGroup parent, LayoutInflater inflater) {
@@ -265,21 +265,17 @@ class QuickSettings {
timeTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- // TODO: Jump into the alarm application
+ // TODO: Jump into the clock application
Intent intent = new Intent();
intent.setComponent(new ComponentName(
"com.google.android.deskclock",
- "com.android.deskclock.AlarmClock"));
+ "com.android.deskclock.DeskClock"));
startSettingsActivity(intent);
}
});
mModel.addTimeTile(timeTile, new QuickSettingsModel.RefreshCallback() {
@Override
- public void refreshView(QuickSettingsTileView view, State alarmState) {
- TextView tv = (TextView) view.findViewById(R.id.alarm_textview);
- tv.setText(alarmState.label);
- tv.setVisibility(alarmState.enabled ? View.VISIBLE : View.GONE);
- }
+ public void refreshView(QuickSettingsTileView view, State alarmState) {}
});
parent.addView(timeTile);
mDynamicSpannedTiles.add(timeTile);
@@ -487,6 +483,31 @@ class QuickSettings {
}
private void addTemporaryTiles(final ViewGroup parent, final LayoutInflater inflater) {
+ // Alarm tile
+ QuickSettingsTileView alarmTile = (QuickSettingsTileView)
+ inflater.inflate(R.layout.quick_settings_tile, parent, false);
+ alarmTile.setContent(R.layout.quick_settings_tile_alarm, inflater);
+ alarmTile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // TODO: Jump into the alarm application
+ Intent intent = new Intent();
+ intent.setComponent(new ComponentName(
+ "com.google.android.deskclock",
+ "com.android.deskclock.AlarmClock"));
+ startSettingsActivity(intent);
+ }
+ });
+ mModel.addAlarmTile(alarmTile, new QuickSettingsModel.RefreshCallback() {
+ @Override
+ public void refreshView(QuickSettingsTileView view, State alarmState) {
+ TextView tv = (TextView) view.findViewById(R.id.alarm_textview);
+ tv.setText(alarmState.label);
+ view.setVisibility(alarmState.enabled ? View.VISIBLE : View.GONE);
+ }
+ });
+ parent.addView(alarmTile);
+
// Location
QuickSettingsTileView locationTile = (QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent, false);
@@ -654,6 +675,7 @@ class QuickSettings {
}
private void dismissBrightnessDialog(int timeout) {
+ removeAllBrightnessDialogCallbacks();
if (mBrightnessDialog != null) {
mHandler.postDelayed(mDismissBrightnessDialogRunnable, timeout);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java
index 27cfab1eacf5..4e8339e7b79f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java
@@ -20,6 +20,7 @@ import android.animation.LayoutTransition;
import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
+import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -64,7 +65,7 @@ class QuickSettingsContainerView extends FrameLayout {
int height = MeasureSpec.getSize(heightMeasureSpec);
int availableWidth = (int) (width - getPaddingLeft() - getPaddingRight() -
(mNumColumns - 1) * mCellGap);
- float cellWidth = availableWidth / mNumColumns;
+ float cellWidth = (float) Math.ceil(((float) availableWidth) / mNumColumns);
// Update each of the children's widths accordingly to the cell width
int N = getChildCount();
@@ -73,20 +74,22 @@ class QuickSettingsContainerView extends FrameLayout {
for (int i = 0; i < N; ++i) {
// Update the child's width
QuickSettingsTileView v = (QuickSettingsTileView) getChildAt(i);
- ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
- int colSpan = v.getColumnSpan();
- lp.width = (int) ((colSpan * cellWidth) + (colSpan - 1) * mCellGap);
-
- // Measure the child
- int newWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
- int newHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY);
- v.measure(newWidthSpec, newHeightSpec);
-
- // Save the cell height
- if (cellHeight <= 0) {
- cellHeight = v.getMeasuredHeight();
+ if (v.getVisibility() != View.GONE) {
+ ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
+ int colSpan = v.getColumnSpan();
+ lp.width = (int) ((colSpan * cellWidth) + (colSpan - 1) * mCellGap);
+
+ // Measure the child
+ int newWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
+ int newHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY);
+ v.measure(newWidthSpec, newHeightSpec);
+
+ // Save the cell height
+ if (cellHeight <= 0) {
+ cellHeight = v.getMeasuredHeight();
+ }
+ cursor += colSpan;
}
- cursor += colSpan;
}
// Set the measured dimensions. We always fill the tray width, but wrap to the height of
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 b26f326fa8dc..04633bfe5e13 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
@@ -137,8 +137,12 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
private UserState mUserState = new UserState();
private QuickSettingsTileView mTimeTile;
- private RefreshCallback mTimeAlarmCallback;
- private State mTimeAlarmState = new State();
+ private RefreshCallback mTimeCallback;
+ private State mTimeState = new State();
+
+ private QuickSettingsTileView mAlarmTile;
+ private RefreshCallback mAlarmCallback;
+ private State mAlarmState = new State();
private QuickSettingsTileView mAirplaneModeTile;
private RefreshCallback mAirplaneModeCallback;
@@ -212,17 +216,24 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
// Time
void addTimeTile(QuickSettingsTileView view, RefreshCallback cb) {
mTimeTile = view;
- mTimeAlarmCallback = cb;
- mTimeAlarmCallback.refreshView(view, mTimeAlarmState);
+ mTimeCallback = cb;
+ mTimeCallback.refreshView(view, mTimeState);
+ }
+
+ // Alarm
+ void addAlarmTile(QuickSettingsTileView view, RefreshCallback cb) {
+ mAlarmTile = view;
+ mAlarmCallback = cb;
+ mAlarmCallback.refreshView(view, mAlarmState);
}
void onAlarmChanged(Intent intent) {
- mTimeAlarmState.enabled = intent.getBooleanExtra("alarmSet", false);
- mTimeAlarmCallback.refreshView(mTimeTile, mTimeAlarmState);
+ mAlarmState.enabled = intent.getBooleanExtra("alarmSet", false);
+ mAlarmCallback.refreshView(mAlarmTile, mAlarmState);
}
void onNextAlarmChanged() {
- mTimeAlarmState.label = Settings.System.getString(mContext.getContentResolver(),
+ mAlarmState.label = Settings.System.getString(mContext.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
- mTimeAlarmCallback.refreshView(mTimeTile, mTimeAlarmState);
+ mAlarmCallback.refreshView(mAlarmTile, mAlarmState);
}
// Airplane Mode
@@ -280,18 +291,33 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
return string;
}
+ // Remove the period from the network name
+ public static String removeTrailingPeriod(String string) {
+ if (string == null) return null;
+ final int length = string.length();
+ if (string.endsWith(".")) {
+ string.substring(0, length - 1);
+ }
+ return string;
+ }
// NetworkSignalChanged callback
@Override
public void onWifiSignalChanged(boolean enabled, int wifiSignalIconId, String enabledDesc) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
mWifiState.enabled = enabled;
- mWifiState.iconId = enabled && (wifiSignalIconId > 0)
- ? wifiSignalIconId
- : R.drawable.ic_qs_wifi_no_network;
- mWifiState.label = enabled && (enabledDesc != null)
- ? removeDoubleQuotes(enabledDesc)
- : r.getString(R.string.quick_settings_wifi_off_label);
+ boolean wifiConnected = enabled && (wifiSignalIconId > 0) && (enabledDesc != null);
+ boolean wifiNotConnected = enabled && (enabledDesc == null);
+ if (wifiConnected) {
+ mWifiState.iconId = wifiSignalIconId;
+ mWifiState.label = removeDoubleQuotes(enabledDesc);
+ } else if (wifiNotConnected) {
+ mWifiState.iconId = R.drawable.ic_qs_wifi_0;
+ mWifiState.label = r.getString(R.string.quick_settings_wifi_not_connected);
+ } else {
+ mWifiState.iconId = R.drawable.ic_qs_wifi_no_network;
+ mWifiState.label = r.getString(R.string.quick_settings_wifi_off_label);
+ }
mWifiCallback.refreshView(mWifiTile, mWifiState);
}
@@ -315,11 +341,11 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
mRSSIState.signalIconId = enabled && (mobileSignalIconId > 0)
? mobileSignalIconId
: R.drawable.ic_qs_signal_no_signal;
- mRSSIState.dataTypeIconId = enabled && (dataTypeIconId > 0)
+ mRSSIState.dataTypeIconId = enabled && (dataTypeIconId > 0) && !mWifiState.enabled
? dataTypeIconId
: 0;
mRSSIState.label = enabled
- ? enabledDesc
+ ? removeTrailingPeriod(enabledDesc)
: r.getString(R.string.quick_settings_rssi_emergency_only);
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
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 f83517b8ff4f..85b91d196a6b 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.animateCollapse();
+ mService.animateCollapseNotifications();
}
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
index f5ceed0369b5..67846a3b7652 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
@@ -192,7 +192,7 @@ public abstract class Ticker {
}
final Drawable icon = StatusBarIconView.getIcon(mContext,
- new StatusBarIcon(n.pkg, n.notification.icon, n.notification.iconLevel, 0,
+ new StatusBarIcon(n.pkg, n.user, n.notification.icon, n.notification.iconLevel, 0,
n.notification.tickerText));
final Segment newSegment = new Segment(n, icon, n.notification.tickerText);
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 c1ea50d1b5ad..73d1c7caa169 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.animateCollapse();
+ mBar.animateCollapseNotifications();
}
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.animateCollapse();
+ mBar.animateCollapseNotifications();
}
} 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 c45ac3ffd60e..ab4ef75fcc8c 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().collapse();
+ getStatusBarManager().collapseNotifications();
}
// 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().collapse();
+ getStatusBarManager().collapseNotifications();
}
}
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 3335dfdcf49b..d1dd3c73c294 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -38,12 +38,10 @@ import android.inputmethodservice.InputMethodService;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.text.TextUtils;
import android.util.Slog;
import android.view.Display;
import android.view.Gravity;
-import android.view.IWindowManager;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SoundEffectConstants;
@@ -742,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();
- animateCollapse();
+ animateCollapseNotifications();
visibilityChanged(false);
}
});
@@ -823,7 +821,7 @@ public class TabletStatusBar extends BaseStatusBar implements
break;
case MSG_HIDE_CHROME:
if (DEBUG) Slog.d(TAG, "showing shadows (lights out)");
- animateCollapse();
+ animateCollapseNotifications();
visibilityChanged(false);
mBarContents.setVisibility(View.GONE);
mShadow.setVisibility(View.VISIBLE);
@@ -909,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");
- animateCollapse();
+ animateCollapseNotifications();
visibilityChanged(false);
}
}
@@ -990,16 +988,16 @@ public class TabletStatusBar extends BaseStatusBar implements
mFeedbackIconArea.setVisibility(View.VISIBLE);
}
- public void animateExpand() {
+ public void animateExpandNotifications() {
mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PANEL);
mHandler.sendEmptyMessage(MSG_OPEN_NOTIFICATION_PANEL);
}
- public void animateCollapse() {
- animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+ public void animateCollapseNotifications() {
+ animateCollapseNotifications(CommandQueue.FLAG_EXCLUDE_NONE);
}
- public void animateCollapse(int flags) {
+ public void animateCollapseNotifications(int flags) {
if ((flags & CommandQueue.FLAG_EXCLUDE_NOTIFICATION_PANEL) == 0) {
mHandler.removeMessages(MSG_CLOSE_NOTIFICATION_PANEL);
mHandler.sendEmptyMessage(MSG_CLOSE_NOTIFICATION_PANEL);
@@ -1023,6 +1021,16 @@ public class TabletStatusBar extends BaseStatusBar implements
}
+ @Override
+ public void animateExpandQuickSettings() {
+ // TODO: Implement when TabletStatusBar begins to be used.
+ }
+
+ @Override
+ public void animateCollapseQuickSettings() {
+ // TODO: Implement when TabletStatusBar begins to be used.
+ }
+
@Override // CommandQueue
public void setNavigationIconHints(int hints) {
if (hints == mNavigationIconHints) return;
@@ -1291,7 +1299,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) {
- animateExpand();
+ animateExpandNotifications();
visibilityChanged(true);
hilite(false);
mVT.recycle();
@@ -1309,7 +1317,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()) {
- animateExpand();
+ animateExpandNotifications();
visibilityChanged(true);
v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
v.playSoundEffect(SoundEffectConstants.CLICK);
@@ -1485,7 +1493,7 @@ public class TabletStatusBar extends BaseStatusBar implements
} catch (RemoteException ex) {
// system process is dead if we're here.
}
- animateCollapse();
+ animateCollapseNotifications();
visibilityChanged(false);
}
@@ -1501,7 +1509,7 @@ public class TabletStatusBar extends BaseStatusBar implements
flags |= CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL;
}
}
- animateCollapse(flags);
+ animateCollapseNotifications(flags);
}
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
index 932b035509a5..ea97941e7630 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
@@ -288,7 +288,8 @@ public class TabletTicker
} else if (n.tickerText != null) {
group = (ViewGroup)inflater.inflate(R.layout.system_bar_ticker_compat, mWindow, false);
final Drawable icon = StatusBarIconView.getIcon(mContext,
- new StatusBarIcon(notification.pkg, n.icon, n.iconLevel, 0, n.tickerText));
+ new StatusBarIcon(notification.pkg, notification.user, n.icon, n.iconLevel, 0,
+ n.tickerText));
ImageView iv = (ImageView)group.findViewById(iconId);
iv.setImageDrawable(icon);
iv.setVisibility(View.VISIBLE);
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 6022fd29f4ba..fd2ee38245fb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -30,7 +30,6 @@ import android.view.WindowManager;
*/
public class TvStatusBar extends BaseStatusBar {
- View mView;
@Override
public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
@@ -62,11 +61,11 @@ public class TvStatusBar extends BaseStatusBar {
}
@Override
- public void animateExpand() {
+ public void animateExpandNotifications() {
}
@Override
- public void animateCollapse(int flags) {
+ public void animateCollapseNotifications(int flags) {
}
@Override
@@ -139,28 +138,15 @@ public class TvStatusBar extends BaseStatusBar {
return true;
}
- protected View makeStatusBarView() {
- synchronized (this) {
- if (mView == null) {
- mView = new View(mContext);
- }
- }
- return mView;
- }
-
public View getStatusBarView() {
return null;
}
- protected int getStatusBarGravity() {
- return 0;
- }
-
- public int getStatusBarHeight() {
- return 0;
+ @Override
+ public void animateExpandQuickSettings() {
}
- public void animateCollapse() {
+ @Override
+ public void animateCollapseQuickSettings() {
}
-
}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
index c55b5bcb3da1..91fc67a84ac9 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
@@ -317,9 +317,9 @@ public class StorageNotification extends StorageEventListener {
}
mUsbStorageNotification.setLatestEventInfo(mContext, title, message, pi);
- final boolean adbOn = 1 == Settings.Secure.getInt(
+ final boolean adbOn = 1 == Settings.Global.getInt(
mContext.getContentResolver(),
- Settings.Secure.ADB_ENABLED,
+ Settings.Global.ADB_ENABLED,
0);
if (POP_UMS_ACTIVITY_ON_CONNECT && !adbOn) {
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 703426429ec0..01b53e2be0aa 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -773,8 +773,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
boolean isDeviceProvisioned() {
- return Settings.Secure.getInt(
- mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
}
private void handleLongPressOnHome() {
@@ -2916,7 +2916,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
try {
IStatusBarService statusbar = getStatusBarService();
if (statusbar != null) {
- statusbar.collapse();
+ statusbar.collapseNotifications();
+ statusbar.collapseQuickSettings();
}
} catch (RemoteException ex) {
// re-acquire status bar service next time it is needed.
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 1a4eeb2300ad..2e7228cb51ec 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
@@ -243,11 +243,15 @@ public class KeyguardHostView extends KeyguardViewBase {
public void reportSuccessfulUnlockAttempt() {
KeyguardUpdateMonitor.getInstance(mContext).clearFailedUnlockAttempts();
+ mLockPatternUtils.reportSuccessfulPasswordAttempt();
}
public void reportFailedUnlockAttempt() {
- // TODO: handle biometric attempt differently.
- KeyguardHostView.this.reportFailedUnlockAttempt();
+ if (mCurrentSecuritySelection == SecurityMode.Biometric) {
+ KeyguardUpdateMonitor.getInstance(mContext).reportFailedBiometricUnlockAttempt();
+ } else {
+ KeyguardHostView.this.reportFailedUnlockAttempt();
+ }
}
public int getFailedAttempts() {
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java
index 6fca826b1874..15a6f9f2b479 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java
@@ -306,8 +306,8 @@ public class KeyguardUpdateMonitor {
private KeyguardUpdateMonitor(Context context) {
mContext = context;
- mDeviceProvisioned = Settings.Secure.getInt(
- mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ mDeviceProvisioned = Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
// Since device can't be un-provisioned, we only need to register a content observer
// to update mDeviceProvisioned when we are...
@@ -357,8 +357,8 @@ public class KeyguardUpdateMonitor {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
- mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ mDeviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
if (mDeviceProvisioned) {
mHandler.sendMessage(mHandler.obtainMessage(MSG_DEVICE_PROVISIONED));
}
@@ -367,13 +367,13 @@ public class KeyguardUpdateMonitor {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED),
+ Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
false, mContentObserver);
// prevent a race condition between where we check the flag and where we register the
// observer by grabbing the value once again...
- boolean provisioned = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ boolean provisioned = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
if (provisioned != mDeviceProvisioned) {
mDeviceProvisioned = provisioned;
if (mDeviceProvisioned) {
diff --git a/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardUpdateMonitor.java
index d990f5f7b358..67dc8a7fcc0e 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardUpdateMonitor.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardUpdateMonitor.java
@@ -286,8 +286,8 @@ public class KeyguardUpdateMonitor {
public KeyguardUpdateMonitor(Context context) {
mContext = context;
- mDeviceProvisioned = Settings.Secure.getInt(
- mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ mDeviceProvisioned = Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
// Since device can't be un-provisioned, we only need to register a content observer
// to update mDeviceProvisioned when we are...
@@ -321,8 +321,8 @@ public class KeyguardUpdateMonitor {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
- mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ mDeviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
if (mDeviceProvisioned) {
mHandler.sendMessage(mHandler.obtainMessage(MSG_DEVICE_PROVISIONED));
}
@@ -331,13 +331,13 @@ public class KeyguardUpdateMonitor {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED),
+ Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
false, mContentObserver);
// prevent a race condition between where we check the flag and where we register the
// observer by grabbing the value once again...
- boolean provisioned = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ boolean provisioned = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
if (provisioned != mDeviceProvisioned) {
mDeviceProvisioned = provisioned;
if (mDeviceProvisioned) {
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index fa8f4b43cdbd..8ec67c401b20 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -657,13 +657,13 @@ class AppWidgetServiceImpl {
}
final ComponentName componentName = intent.getComponent();
try {
- final ServiceInfo si = mContext.getPackageManager().getServiceInfo(componentName,
- PackageManager.GET_PERMISSIONS);
+ final ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo(componentName,
+ PackageManager.GET_PERMISSIONS, mUserId);
if (!android.Manifest.permission.BIND_REMOTEVIEWS.equals(si.permission)) {
throw new SecurityException("Selected service does not require "
+ android.Manifest.permission.BIND_REMOTEVIEWS + ": " + componentName);
}
- } catch (PackageManager.NameNotFoundException e) {
+ } catch (RemoteException e) {
throw new IllegalArgumentException("Unknown component " + componentName);
}
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 5e2b42551d95..15fc479aa58c 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -729,14 +729,14 @@ class BackupManagerService extends IBackupManager.Stub {
final ContentResolver resolver = context.getContentResolver();
boolean areEnabled = Settings.Secure.getInt(resolver,
Settings.Secure.BACKUP_ENABLED, 0) != 0;
- mProvisioned = Settings.Secure.getInt(resolver,
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
+ mProvisioned = Settings.Global.getInt(resolver,
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
mAutoRestore = Settings.Secure.getInt(resolver,
Settings.Secure.BACKUP_AUTO_RESTORE, 1) != 0;
mProvisionedObserver = new ProvisionedObserver(mBackupHandler);
resolver.registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED),
+ Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
false, mProvisionedObserver);
// If Encrypted file systems is enabled or disabled, this call will return the
@@ -4956,7 +4956,7 @@ class BackupManagerService extends IBackupManager.Stub {
boolean deviceIsProvisioned() {
final ContentResolver resolver = mContext.getContentResolver();
- return (Settings.Secure.getInt(resolver, Settings.Secure.DEVICE_PROVISIONED, 0) != 0);
+ return (Settings.Global.getInt(resolver, Settings.Global.DEVICE_PROVISIONED, 0) != 0);
}
// Run a *full* backup pass for the given package, writing the resulting data stream
diff --git a/services/java/com/android/server/BluetoothManagerService.java b/services/java/com/android/server/BluetoothManagerService.java
index e68686de5ffe..ce75e350bbfa 100755
--- a/services/java/com/android/server/BluetoothManagerService.java
+++ b/services/java/com/android/server/BluetoothManagerService.java
@@ -159,8 +159,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
* Returns true if the Bluetooth saved state is "on"
*/
private final boolean isBluetoothPersistedStateOn() {
- return Settings.Secure.getInt(mContentResolver,
- Settings.Secure.BLUETOOTH_ON, 0) ==1;
+ return Settings.Global.getInt(mContentResolver,
+ Settings.Global.BLUETOOTH_ON, 0) ==1;
}
/**
@@ -168,8 +168,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
*
*/
private void persistBluetoothSetting(boolean setOn) {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.BLUETOOTH_ON,
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.BLUETOOTH_ON,
setOn ? 1 : 0);
}
@@ -218,8 +218,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
}
public IBluetooth registerAdapter(IBluetoothManagerCallback callback){
- mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM,
- "Need BLUETOOTH permission");
Message msg = mHandler.obtainMessage(MESSAGE_REGISTER_ADAPTER);
msg.obj = callback;
mHandler.sendMessage(msg);
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 9676eb9e8a8c..ceb17c7bb689 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -701,7 +701,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mNetConfigs[preference].isDefault()) {
if (mNetworkPreference != preference) {
final ContentResolver cr = mContext.getContentResolver();
- Settings.Secure.putInt(cr, Settings.Secure.NETWORK_PREFERENCE, preference);
+ Settings.Global.putInt(cr, Settings.Global.NETWORK_PREFERENCE, preference);
synchronized(this) {
mNetworkPreference = preference;
}
@@ -724,8 +724,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private int getPersistedNetworkPreference() {
final ContentResolver cr = mContext.getContentResolver();
- final int networkPrefSetting = Settings.Secure
- .getInt(cr, Settings.Secure.NETWORK_PREFERENCE, -1);
+ final int networkPrefSetting = Settings.Global
+ .getInt(cr, Settings.Global.NETWORK_PREFERENCE, -1);
if (networkPrefSetting != -1) {
return networkPrefSetting;
}
@@ -2108,14 +2108,14 @@ public class ConnectivityService extends IConnectivityManager.Stub {
final int timeout;
if (ConnectivityManager.isNetworkTypeMobile(type)) {
- timeout = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DATA_ACTIVITY_TIMEOUT_MOBILE,
+ timeout = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE,
0);
// Canonicalize mobile network type
type = ConnectivityManager.TYPE_MOBILE;
} else if (ConnectivityManager.TYPE_WIFI == type) {
- timeout = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DATA_ACTIVITY_TIMEOUT_WIFI,
+ timeout = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI,
0);
} else {
// do not track any other networks
@@ -2930,8 +2930,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
public boolean isTetheringSupported() {
enforceTetherAccessPermission();
int defaultVal = (SystemProperties.get("ro.tether.denied").equals("true") ? 0 : 1);
- boolean tetherEnabledInSettings = (Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.TETHER_SUPPORTED, defaultVal) != 0);
+ boolean tetherEnabledInSettings = (Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.TETHER_SUPPORTED, defaultVal) != 0);
return tetherEnabledInSettings && mTetheringConfigValid;
}
diff --git a/services/java/com/android/server/DockObserver.java b/services/java/com/android/server/DockObserver.java
index 65c39f2ad788..8ad5a919cdd9 100644
--- a/services/java/com/android/server/DockObserver.java
+++ b/services/java/com/android/server/DockObserver.java
@@ -147,8 +147,8 @@ final class DockObserver extends UEventObserver {
final ContentResolver cr = mContext.getContentResolver();
- if (Settings.Secure.getInt(cr,
- Settings.Secure.DEVICE_PROVISIONED, 0) == 0) {
+ if (Settings.Global.getInt(cr,
+ Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
Slog.i(TAG, "Device not provisioned, skipping dock broadcast");
return;
}
@@ -168,29 +168,29 @@ final class DockObserver extends UEventObserver {
// User feedback to confirm dock connection. Particularly
// useful for flaky contact pins...
- if (Settings.System.getInt(cr,
- Settings.System.DOCK_SOUNDS_ENABLED, 1) == 1) {
+ if (Settings.Global.getInt(cr,
+ Settings.Global.DOCK_SOUNDS_ENABLED, 1) == 1) {
String whichSound = null;
if (mDockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) {
if ((mPreviousDockState == Intent.EXTRA_DOCK_STATE_DESK) ||
(mPreviousDockState == Intent.EXTRA_DOCK_STATE_LE_DESK) ||
(mPreviousDockState == Intent.EXTRA_DOCK_STATE_HE_DESK)) {
- whichSound = Settings.System.DESK_UNDOCK_SOUND;
+ whichSound = Settings.Global.DESK_UNDOCK_SOUND;
} else if (mPreviousDockState == Intent.EXTRA_DOCK_STATE_CAR) {
- whichSound = Settings.System.CAR_UNDOCK_SOUND;
+ whichSound = Settings.Global.CAR_UNDOCK_SOUND;
}
} else {
if ((mDockState == Intent.EXTRA_DOCK_STATE_DESK) ||
(mDockState == Intent.EXTRA_DOCK_STATE_LE_DESK) ||
(mDockState == Intent.EXTRA_DOCK_STATE_HE_DESK)) {
- whichSound = Settings.System.DESK_DOCK_SOUND;
+ whichSound = Settings.Global.DESK_DOCK_SOUND;
} else if (mDockState == Intent.EXTRA_DOCK_STATE_CAR) {
- whichSound = Settings.System.CAR_DOCK_SOUND;
+ whichSound = Settings.Global.CAR_DOCK_SOUND;
}
}
if (whichSound != null) {
- final String soundPath = Settings.System.getString(cr, whichSound);
+ final String soundPath = Settings.Global.getString(cr, whichSound);
if (soundPath != null) {
final Uri soundUri = Uri.parse("file://" + soundPath);
if (soundUri != null) {
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index fe2f8d8896a2..0312705f109d 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -58,6 +58,7 @@ import android.util.Slog;
import android.util.Xml;
import com.android.internal.app.IMediaContainerService;
+import com.android.internal.util.Preconditions;
import com.android.internal.util.XmlUtils;
import com.android.server.NativeDaemonConnector.Command;
import com.android.server.am.ActivityManagerService;
@@ -224,22 +225,31 @@ class MountService extends IMountService.Stub
* OBBs.
*/
final private Map<IBinder, List<ObbState>> mObbMounts = new HashMap<IBinder, List<ObbState>>();
+
+ /** Map from raw paths to {@link ObbState}. */
final private Map<String, ObbState> mObbPathToStateMap = new HashMap<String, ObbState>();
class ObbState implements IBinder.DeathRecipient {
- public ObbState(String filename, int callerUid, IObbActionListener token, int nonce)
- throws RemoteException {
- this.filename = filename;
- this.callerUid = callerUid;
+ public ObbState(String rawPath, String canonicalPath, int callingUid,
+ IObbActionListener token, int nonce) {
+ this.rawPath = rawPath;
+ this.canonicalPath = canonicalPath.toString();
+
+ final int userId = UserHandle.getUserId(callingUid);
+ this.ownerPath = buildObbPath(canonicalPath, userId, false);
+ this.voldPath = buildObbPath(canonicalPath, userId, true);
+
+ this.ownerGid = UserHandle.getSharedAppGid(callingUid);
this.token = token;
this.nonce = nonce;
}
- // OBB source filename
- String filename;
+ final String rawPath;
+ final String canonicalPath;
+ final String ownerPath;
+ final String voldPath;
- // Binder.callingUid()
- final public int callerUid;
+ final int ownerGid;
// Token of remote Binder caller
final IObbActionListener token;
@@ -268,12 +278,13 @@ class MountService extends IMountService.Stub
@Override
public String toString() {
StringBuilder sb = new StringBuilder("ObbState{");
- sb.append("filename=");
- sb.append(filename);
- sb.append(",token=");
- sb.append(token.toString());
- sb.append(",callerUid=");
- sb.append(callerUid);
+ sb.append("rawPath=").append(rawPath);
+ sb.append(",canonicalPath=").append(canonicalPath);
+ sb.append(",ownerPath=").append(ownerPath);
+ sb.append(",voldPath=").append(voldPath);
+ sb.append(",ownerGid=").append(ownerGid);
+ sb.append(",token=").append(token);
+ sb.append(",binder=").append(getBinder());
sb.append('}');
return sb.toString();
}
@@ -1853,17 +1864,24 @@ class MountService extends IMountService.Stub
return callerUid == packageUid;
}
- public String getMountedObbPath(String filename) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
+ public String getMountedObbPath(String rawPath) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
waitForReady();
warnOnNotMounted();
+ final ObbState state;
+ synchronized (mObbPathToStateMap) {
+ state = mObbPathToStateMap.get(rawPath);
+ }
+ if (state == null) {
+ Slog.w(TAG, "Failed to find OBB mounted at " + rawPath);
+ return null;
+ }
+
final NativeDaemonEvent event;
try {
- event = mConnector.execute("obb", "path", filename);
+ event = mConnector.execute("obb", "path", state.voldPath);
event.checkCode(VoldResponseCode.AsecPathResult);
return event.getMessage();
} catch (NativeDaemonConnectorException e) {
@@ -1876,48 +1894,52 @@ class MountService extends IMountService.Stub
}
}
- public boolean isObbMounted(String filename) {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
-
+ @Override
+ public boolean isObbMounted(String rawPath) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
synchronized (mObbMounts) {
- return mObbPathToStateMap.containsKey(filename);
+ return mObbPathToStateMap.containsKey(rawPath);
}
}
- public void mountObb(String filename, String key, IObbActionListener token, int nonce)
- throws RemoteException {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
- }
-
- if (token == null) {
- throw new IllegalArgumentException("token cannot be null");
- }
-
- final int callerUid = Binder.getCallingUid();
- final ObbState obbState = new ObbState(filename, callerUid, token, nonce);
- final ObbAction action = new MountObbAction(obbState, key);
+ @Override
+ public void mountObb(
+ String rawPath, String canonicalPath, String key, IObbActionListener token, int nonce) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
+ Preconditions.checkNotNull(canonicalPath, "canonicalPath cannot be null");
+ Preconditions.checkNotNull(token, "token cannot be null");
+
+ final int callingUid = Binder.getCallingUid();
+ final ObbState obbState = new ObbState(rawPath, canonicalPath, callingUid, token, nonce);
+ final ObbAction action = new MountObbAction(obbState, key, callingUid);
mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action));
if (DEBUG_OBB)
Slog.i(TAG, "Send to OBB handler: " + action.toString());
}
- public void unmountObb(String filename, boolean force, IObbActionListener token, int nonce)
- throws RemoteException {
- if (filename == null) {
- throw new IllegalArgumentException("filename cannot be null");
+ @Override
+ public void unmountObb(String rawPath, boolean force, IObbActionListener token, int nonce) {
+ Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
+
+ final ObbState existingState;
+ synchronized (mObbPathToStateMap) {
+ existingState = mObbPathToStateMap.get(rawPath);
}
- final int callerUid = Binder.getCallingUid();
- final ObbState obbState = new ObbState(filename, callerUid, token, nonce);
- final ObbAction action = new UnmountObbAction(obbState, force);
- mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action));
+ if (existingState != null) {
+ // TODO: separate state object from request data
+ final int callingUid = Binder.getCallingUid();
+ final ObbState newState = new ObbState(
+ rawPath, existingState.canonicalPath, callingUid, token, nonce);
+ final ObbAction action = new UnmountObbAction(newState, force);
+ mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action));
- if (DEBUG_OBB)
- Slog.i(TAG, "Send to OBB handler: " + action.toString());
+ if (DEBUG_OBB)
+ Slog.i(TAG, "Send to OBB handler: " + action.toString());
+ } else {
+ Slog.w(TAG, "Unknown OBB mount at " + rawPath);
+ }
}
@Override
@@ -2094,7 +2116,7 @@ class MountService extends IMountService.Stub
mObbMounts.put(binder, obbStates);
} else {
for (final ObbState o : obbStates) {
- if (o.filename.equals(obbState.filename)) {
+ if (o.rawPath.equals(obbState.rawPath)) {
throw new IllegalStateException("Attempt to add ObbState twice. "
+ "This indicates an error in the MountService logic.");
}
@@ -2118,7 +2140,7 @@ class MountService extends IMountService.Stub
throw e;
}
- mObbPathToStateMap.put(obbState.filename, obbState);
+ mObbPathToStateMap.put(obbState.rawPath, obbState);
}
private void removeObbStateLocked(ObbState obbState) {
@@ -2133,7 +2155,7 @@ class MountService extends IMountService.Stub
}
}
- mObbPathToStateMap.remove(obbState.filename);
+ mObbPathToStateMap.remove(obbState.rawPath);
}
private class ObbActionHandler extends Handler {
@@ -2241,33 +2263,32 @@ class MountService extends IMountService.Stub
synchronized (mObbMounts) {
final List<ObbState> obbStatesToRemove = new LinkedList<ObbState>();
- final Iterator<Entry<String, ObbState>> i =
- mObbPathToStateMap.entrySet().iterator();
+ final Iterator<ObbState> i = mObbPathToStateMap.values().iterator();
while (i.hasNext()) {
- final Entry<String, ObbState> obbEntry = i.next();
+ final ObbState state = i.next();
/*
* If this entry's source file is in the volume path
* that got unmounted, remove it because it's no
* longer valid.
*/
- if (obbEntry.getKey().startsWith(path)) {
- obbStatesToRemove.add(obbEntry.getValue());
+ if (state.canonicalPath.startsWith(path)) {
+ obbStatesToRemove.add(state);
}
}
for (final ObbState obbState : obbStatesToRemove) {
if (DEBUG_OBB)
- Slog.i(TAG, "Removing state for " + obbState.filename);
+ Slog.i(TAG, "Removing state for " + obbState.rawPath);
removeObbStateLocked(obbState);
try {
- obbState.token.onObbResult(obbState.filename, obbState.nonce,
+ obbState.token.onObbResult(obbState.rawPath, obbState.nonce,
OnObbStateChangeListener.UNMOUNTED);
} catch (RemoteException e) {
Slog.i(TAG, "Couldn't send unmount notification for OBB: "
- + obbState.filename);
+ + obbState.rawPath);
}
}
}
@@ -2339,14 +2360,14 @@ class MountService extends IMountService.Stub
protected ObbInfo getObbInfo() throws IOException {
ObbInfo obbInfo;
try {
- obbInfo = mContainerService.getObbInfo(mObbState.filename);
+ obbInfo = mContainerService.getObbInfo(mObbState.ownerPath);
} catch (RemoteException e) {
Slog.d(TAG, "Couldn't call DefaultContainerService to fetch OBB info for "
- + mObbState.filename);
+ + mObbState.ownerPath);
obbInfo = null;
}
if (obbInfo == null) {
- throw new IOException("Couldn't read OBB file: " + mObbState.filename);
+ throw new IOException("Couldn't read OBB file: " + mObbState.ownerPath);
}
return obbInfo;
}
@@ -2357,7 +2378,7 @@ class MountService extends IMountService.Stub
}
try {
- mObbState.token.onObbResult(mObbState.filename, mObbState.nonce, status);
+ mObbState.token.onObbResult(mObbState.rawPath, mObbState.nonce, status);
} catch (RemoteException e) {
Slog.w(TAG, "MountServiceListener went away while calling onObbStateChanged");
}
@@ -2366,10 +2387,12 @@ class MountService extends IMountService.Stub
class MountObbAction extends ObbAction {
private final String mKey;
+ private final int mCallingUid;
- MountObbAction(ObbState obbState, String key) {
+ MountObbAction(ObbState obbState, String key, int callingUid) {
super(obbState);
mKey = key;
+ mCallingUid = callingUid;
}
@Override
@@ -2379,7 +2402,7 @@ class MountService extends IMountService.Stub
final ObbInfo obbInfo = getObbInfo();
- if (!isUidOwnerOfPackageOrSystem(obbInfo.packageName, mObbState.callerUid)) {
+ if (!isUidOwnerOfPackageOrSystem(obbInfo.packageName, mCallingUid)) {
Slog.w(TAG, "Denied attempt to mount OBB " + obbInfo.filename
+ " which is owned by " + obbInfo.packageName);
sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_PERMISSION_DENIED);
@@ -2388,7 +2411,7 @@ class MountService extends IMountService.Stub
final boolean isMounted;
synchronized (mObbMounts) {
- isMounted = mObbPathToStateMap.containsKey(obbInfo.filename);
+ isMounted = mObbPathToStateMap.containsKey(mObbState.rawPath);
}
if (isMounted) {
Slog.w(TAG, "Attempt to mount OBB which is already mounted: " + obbInfo.filename);
@@ -2396,12 +2419,6 @@ class MountService extends IMountService.Stub
return;
}
- /*
- * The filename passed in might not be the canonical name, so just
- * set the filename to the canonicalized version.
- */
- mObbState.filename = obbInfo.filename;
-
final String hashedKey;
if (mKey == null) {
hashedKey = "none";
@@ -2428,7 +2445,7 @@ class MountService extends IMountService.Stub
int rc = StorageResultCode.OperationSucceeded;
try {
mConnector.execute(
- "obb", "mount", mObbState.filename, hashedKey, mObbState.callerUid);
+ "obb", "mount", mObbState.voldPath, hashedKey, mObbState.ownerGid);
} catch (NativeDaemonConnectorException e) {
int code = e.getCode();
if (code != VoldResponseCode.OpFailedStorageBusy) {
@@ -2438,7 +2455,7 @@ class MountService extends IMountService.Stub
if (rc == StorageResultCode.OperationSucceeded) {
if (DEBUG_OBB)
- Slog.d(TAG, "Successfully mounted OBB " + mObbState.filename);
+ Slog.d(TAG, "Successfully mounted OBB " + mObbState.voldPath);
synchronized (mObbMounts) {
addObbStateLocked(mObbState);
@@ -2461,14 +2478,7 @@ class MountService extends IMountService.Stub
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("MountObbAction{");
- sb.append("filename=");
- sb.append(mObbState.filename);
- sb.append(",callerUid=");
- sb.append(mObbState.callerUid);
- sb.append(",token=");
- sb.append(mObbState.token != null ? mObbState.token.toString() : "NULL");
- sb.append(",binder=");
- sb.append(mObbState.token != null ? mObbState.getBinder().toString() : "null");
+ sb.append(mObbState);
sb.append('}');
return sb.toString();
}
@@ -2489,28 +2499,26 @@ class MountService extends IMountService.Stub
final ObbInfo obbInfo = getObbInfo();
- final ObbState obbState;
+ final ObbState existingState;
synchronized (mObbMounts) {
- obbState = mObbPathToStateMap.get(obbInfo.filename);
+ existingState = mObbPathToStateMap.get(mObbState.rawPath);
}
- if (obbState == null) {
+ if (existingState == null) {
sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_NOT_MOUNTED);
return;
}
- if (obbState.callerUid != mObbState.callerUid) {
- Slog.w(TAG, "Permission denied attempting to unmount OBB " + obbInfo.filename
- + " (owned by " + obbInfo.packageName + ")");
+ if (existingState.ownerGid != mObbState.ownerGid) {
+ Slog.w(TAG, "Permission denied attempting to unmount OBB " + existingState.rawPath
+ + " (owned by GID " + existingState.ownerGid + ")");
sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_PERMISSION_DENIED);
return;
}
- mObbState.filename = obbInfo.filename;
-
int rc = StorageResultCode.OperationSucceeded;
try {
- final Command cmd = new Command("obb", "unmount", mObbState.filename);
+ final Command cmd = new Command("obb", "unmount", mObbState.voldPath);
if (mForceUnmount) {
cmd.appendArg("force");
}
@@ -2529,12 +2537,12 @@ class MountService extends IMountService.Stub
if (rc == StorageResultCode.OperationSucceeded) {
synchronized (mObbMounts) {
- removeObbStateLocked(obbState);
+ removeObbStateLocked(existingState);
}
sendNewStatusOrIgnore(OnObbStateChangeListener.UNMOUNTED);
} else {
- Slog.w(TAG, "Could not mount OBB: " + mObbState.filename);
+ Slog.w(TAG, "Could not unmount OBB: " + existingState);
sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_COULD_NOT_UNMOUNT);
}
}
@@ -2548,21 +2556,63 @@ class MountService extends IMountService.Stub
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("UnmountObbAction{");
- sb.append("filename=");
- sb.append(mObbState.filename != null ? mObbState.filename : "null");
+ sb.append(mObbState);
sb.append(",force=");
sb.append(mForceUnmount);
- sb.append(",callerUid=");
- sb.append(mObbState.callerUid);
- sb.append(",token=");
- sb.append(mObbState.token != null ? mObbState.token.toString() : "null");
- sb.append(",binder=");
- sb.append(mObbState.token != null ? mObbState.getBinder().toString() : "null");
sb.append('}');
return sb.toString();
}
}
+ // @VisibleForTesting
+ public static String buildObbPath(final String canonicalPath, int userId, boolean forVold) {
+ // TODO: allow caller to provide Environment for full testing
+
+ // Only adjust paths when storage is emulated
+ if (!Environment.isExternalStorageEmulated()) {
+ return canonicalPath;
+ }
+
+ String path = canonicalPath.toString();
+
+ // First trim off any external storage prefix
+ final UserEnvironment userEnv = new UserEnvironment(userId);
+
+ // /storage/emulated/0
+ final String externalPath = userEnv.getExternalStorageDirectory().toString();
+ // /storage/emulated_legacy
+ final String legacyExternalPath = Environment.getLegacyExternalStorageDirectory()
+ .toString();
+
+ if (path.startsWith(externalPath)) {
+ path = path.substring(externalPath.length() + 1);
+ } else if (path.startsWith(legacyExternalPath)) {
+ path = path.substring(legacyExternalPath.length() + 1);
+ } else {
+ return canonicalPath;
+ }
+
+ // Handle special OBB paths on emulated storage
+ final String obbPath = "Android/obb";
+ if (path.startsWith(obbPath)) {
+ path = path.substring(obbPath.length() + 1);
+
+ if (forVold) {
+ return new File(Environment.getEmulatedStorageObbSource(), path).toString();
+ } else {
+ final UserEnvironment ownerEnv = new UserEnvironment(UserHandle.USER_OWNER);
+ return new File(ownerEnv.getExternalStorageObbDirectory(), path).toString();
+ }
+ }
+
+ // Handle normal external storage paths
+ if (forVold) {
+ return new File(Environment.getEmulatedStorageSource(userId), path).toString();
+ } else {
+ return new File(userEnv.getExternalStorageDirectory(), path).toString();
+ }
+ }
+
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) != PackageManager.PERMISSION_GRANTED) {
diff --git a/services/java/com/android/server/NetworkTimeUpdateService.java b/services/java/com/android/server/NetworkTimeUpdateService.java
index 76972bce8f84..790be55b3c09 100644
--- a/services/java/com/android/server/NetworkTimeUpdateService.java
+++ b/services/java/com/android/server/NetworkTimeUpdateService.java
@@ -215,8 +215,8 @@ public class NetworkTimeUpdateService {
* Checks if the user prefers to automatically set the time.
*/
private boolean isAutomaticTimeRequested() {
- return Settings.System.getInt(mContext.getContentResolver(), Settings.System.AUTO_TIME, 0)
- != 0;
+ return Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0) != 0;
}
/** Receiver for Nitz time events */
@@ -289,7 +289,7 @@ public class NetworkTimeUpdateService {
void observe(Context context) {
ContentResolver resolver = context.getContentResolver();
- resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.AUTO_TIME),
+ resolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.AUTO_TIME),
false, this);
}
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index bab4f7a14b30..76194ae79be5 100755
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -626,8 +626,8 @@ public class NotificationManagerService extends INotificationManager.Stub
// After that, including subsequent boots, init with notifications turned on.
// This works on the first boot because the setup wizard will toggle this
// flag at least once and we'll go back to 0 after that.
- if (0 == Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DEVICE_PROVISIONED, 0)) {
+ if (0 == Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0)) {
mDisabledNotifications = StatusBarManager.DISABLE_NOTIFICATION_ALERTS;
}
diff --git a/services/java/com/android/server/RecognitionManagerService.java b/services/java/com/android/server/RecognitionManagerService.java
index 3567cfc7a22d..1e0755d6c35f 100644
--- a/services/java/com/android/server/RecognitionManagerService.java
+++ b/services/java/com/android/server/RecognitionManagerService.java
@@ -18,13 +18,18 @@ package com.android.server;
import com.android.internal.content.PackageMonitor;
+import android.app.AppGlobals;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.IPackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Binder;
+import android.os.RemoteException;
+import android.os.UserHandle;
import android.provider.Settings;
import android.speech.RecognitionService;
import android.text.TextUtils;
@@ -34,68 +39,82 @@ import java.util.List;
public class RecognitionManagerService extends Binder {
final static String TAG = "RecognitionManagerService";
-
- final Context mContext;
- final MyPackageMonitor mMonitor;
-
+
+ private final Context mContext;
+ private final MyPackageMonitor mMonitor;
+ private final IPackageManager mIPm;
+
+ private static final boolean DEBUG = false;
+
class MyPackageMonitor extends PackageMonitor {
public void onSomePackagesChanged() {
- ComponentName comp = getCurRecognizer();
+ int userHandle = getChangingUserId();
+ if (DEBUG) Slog.i(TAG, "onSomePackagesChanged user=" + userHandle);
+ ComponentName comp = getCurRecognizer(userHandle);
if (comp == null) {
if (anyPackagesAppearing()) {
- comp = findAvailRecognizer(null);
+ comp = findAvailRecognizer(null, userHandle);
if (comp != null) {
- setCurRecognizer(comp);
+ setCurRecognizer(comp, userHandle);
}
}
return;
}
-
+
int change = isPackageDisappearing(comp.getPackageName());
if (change == PACKAGE_PERMANENT_CHANGE
|| change == PACKAGE_TEMPORARY_CHANGE) {
- setCurRecognizer(findAvailRecognizer(null));
+ setCurRecognizer(findAvailRecognizer(null, userHandle), userHandle);
} else if (isPackageModified(comp.getPackageName())) {
- setCurRecognizer(findAvailRecognizer(comp.getPackageName()));
+ setCurRecognizer(findAvailRecognizer(comp.getPackageName(), userHandle),
+ userHandle);
}
}
}
-
+
RecognitionManagerService(Context context) {
mContext = context;
mMonitor = new MyPackageMonitor();
- mMonitor.register(context, null, true);
+ mMonitor.register(context, null, UserHandle.ALL, true);
+ mIPm = AppGlobals.getPackageManager();
+ mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
+ new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, null);
}
-
+
public void systemReady() {
- ComponentName comp = getCurRecognizer();
+ initForUser(UserHandle.USER_OWNER);
+ }
+
+ private void initForUser(int userHandle) {
+ if (DEBUG) Slog.i(TAG, "initForUser user=" + userHandle);
+ ComponentName comp = getCurRecognizer(userHandle);
if (comp != null) {
// See if the current recognizer is no longer available.
try {
- mContext.getPackageManager().getServiceInfo(comp, 0);
- } catch (NameNotFoundException e) {
- comp = findAvailRecognizer(null);
+ mIPm.getServiceInfo(comp, 0, userHandle);
+ } catch (RemoteException e) {
+ comp = findAvailRecognizer(null, userHandle);
if (comp != null) {
- setCurRecognizer(comp);
+ setCurRecognizer(comp, userHandle);
}
}
} else {
- comp = findAvailRecognizer(null);
+ comp = findAvailRecognizer(null, userHandle);
if (comp != null) {
- setCurRecognizer(comp);
+ setCurRecognizer(comp, userHandle);
}
}
}
-
- ComponentName findAvailRecognizer(String prefPackage) {
+
+ ComponentName findAvailRecognizer(String prefPackage, int userHandle) {
List<ResolveInfo> available =
- mContext.getPackageManager().queryIntentServices(
- new Intent(RecognitionService.SERVICE_INTERFACE), 0);
+ mContext.getPackageManager().queryIntentServicesAsUser(
+ new Intent(RecognitionService.SERVICE_INTERFACE), 0, userHandle);
int numAvailable = available.size();
-
+
if (numAvailable == 0) {
- Slog.w(TAG, "no available voice recognition services found");
+ Slog.w(TAG, "no available voice recognition services found for user " + userHandle);
return null;
} else {
if (prefPackage != null) {
@@ -109,25 +128,42 @@ public class RecognitionManagerService extends Binder {
if (numAvailable > 1) {
Slog.w(TAG, "more than one voice recognition service found, picking first");
}
-
+
ServiceInfo serviceInfo = available.get(0).serviceInfo;
return new ComponentName(serviceInfo.packageName, serviceInfo.name);
}
}
-
- ComponentName getCurRecognizer() {
- String curRecognizer = Settings.Secure.getString(
+
+ ComponentName getCurRecognizer(int userHandle) {
+ String curRecognizer = Settings.Secure.getStringForUser(
mContext.getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE);
+ Settings.Secure.VOICE_RECOGNITION_SERVICE, userHandle);
if (TextUtils.isEmpty(curRecognizer)) {
return null;
}
+ if (DEBUG) Slog.i(TAG, "getCurRecognizer curRecognizer=" + curRecognizer
+ + " user=" + userHandle);
return ComponentName.unflattenFromString(curRecognizer);
}
-
- void setCurRecognizer(ComponentName comp) {
- Settings.Secure.putString(mContext.getContentResolver(),
+
+ void setCurRecognizer(ComponentName comp, int userHandle) {
+ Settings.Secure.putStringForUser(mContext.getContentResolver(),
Settings.Secure.VOICE_RECOGNITION_SERVICE,
- comp != null ? comp.flattenToShortString() : "");
+ comp != null ? comp.flattenToShortString() : "", userHandle);
+ if (DEBUG) Slog.i(TAG, "setCurRecognizer comp=" + comp
+ + " user=" + userHandle);
}
+
+ BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (DEBUG) Slog.i(TAG, "received " + action);
+ if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
+ int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
+ if (userHandle > 0) {
+ initForUser(userHandle);
+ }
+ }
+ }
+ };
}
diff --git a/services/java/com/android/server/SamplingProfilerService.java b/services/java/com/android/server/SamplingProfilerService.java
index 0034d2c342f0..fbf1aa4b8db0 100644
--- a/services/java/com/android/server/SamplingProfilerService.java
+++ b/services/java/com/android/server/SamplingProfilerService.java
@@ -90,7 +90,7 @@ public class SamplingProfilerService extends Binder {
private void registerSettingObserver(Context context) {
ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.SAMPLING_PROFILER_MS),
+ Settings.Global.getUriFor(Settings.Global.SAMPLING_PROFILER_MS),
false, new SamplingProfilerSettingsObserver(contentResolver));
}
@@ -111,8 +111,8 @@ public class SamplingProfilerService extends Binder {
}
@Override
public void onChange(boolean selfChange) {
- Integer samplingProfilerMs = Settings.Secure.getInt(
- mContentResolver, Settings.Secure.SAMPLING_PROFILER_MS, 0);
+ Integer samplingProfilerMs = Settings.Global.getInt(
+ mContentResolver, Settings.Global.SAMPLING_PROFILER_MS, 0);
// setting this secure property will start or stop sampling profiler,
// as well as adjust the the time between taking snapshots.
SystemProperties.set("persist.sys.profiler_ms", samplingProfilerMs.toString());
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java
index 9f53fadbd191..b567992ea46d 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/java/com/android/server/StatusBarManagerService.java
@@ -26,6 +26,7 @@ import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.util.Slog;
import com.android.internal.statusbar.IStatusBar;
@@ -116,23 +117,45 @@ public class StatusBarManagerService extends IStatusBarService.Stub
// ================================================================================
// From IStatusBarService
// ================================================================================
- public void expand() {
+ public void expandNotifications() {
enforceExpandStatusBar();
if (mBar != null) {
try {
- mBar.animateExpand();
+ mBar.animateExpandNotifications();
} catch (RemoteException ex) {
}
}
}
- public void collapse() {
+ public void collapseNotifications() {
enforceExpandStatusBar();
if (mBar != null) {
try {
- mBar.animateCollapse();
+ mBar.animateCollapseNotifications();
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+
+ public void expandQuickSettings() {
+ enforceExpandStatusBar();
+
+ if (mBar != null) {
+ try {
+ mBar.animateExpandQuickSettings();
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+
+ public void collapseQuickSettings() {
+ enforceExpandStatusBar();
+
+ if (mBar != null) {
+ try {
+ mBar.animateCollapseQuickSettings();
} catch (RemoteException ex) {
}
}
@@ -179,7 +202,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub
throw new SecurityException("invalid status bar icon slot: " + slot);
}
- StatusBarIcon icon = new StatusBarIcon(iconPackage, iconId, iconLevel, 0,
+ StatusBarIcon icon = new StatusBarIcon(iconPackage, UserHandle.OWNER, iconId,
+ iconLevel, 0,
contentDescription);
//Slog.d(TAG, "setIcon slot=" + slot + " index=" + index + " icon=" + icon);
mIcons.setIcon(index, icon);
@@ -596,7 +620,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub
String action = intent.getAction();
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)
|| Intent.ACTION_SCREEN_OFF.equals(action)) {
- collapse();
+ collapseNotifications();
+ collapseQuickSettings();
}
/*
else if (Telephony.Intents.SPN_STRINGS_UPDATED_ACTION.equals(action)) {
diff --git a/services/java/com/android/server/VibratorService.java b/services/java/com/android/server/VibratorService.java
index 72fde1123809..df91decb31ed 100755
--- a/services/java/com/android/server/VibratorService.java
+++ b/services/java/com/android/server/VibratorService.java
@@ -31,6 +31,7 @@ import android.os.RemoteException;
import android.os.IBinder;
import android.os.Binder;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.os.Vibrator;
import android.os.WorkSource;
import android.provider.Settings;
@@ -139,6 +140,7 @@ public class VibratorService extends IVibratorService.Stub
public void systemReady() {
mIm = (InputManager)mContext.getSystemService(Context.INPUT_SERVICE);
+
mContext.getContentResolver().registerContentObserver(
Settings.System.getUriFor(Settings.System.VIBRATE_INPUT_DEVICES), true,
new ContentObserver(mH) {
@@ -146,7 +148,15 @@ public class VibratorService extends IVibratorService.Stub
public void onChange(boolean selfChange) {
updateInputDeviceVibrators();
}
- });
+ }, UserHandle.USER_ALL);
+
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ updateInputDeviceVibrators();
+ }
+ }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mH);
+
updateInputDeviceVibrators();
}
@@ -341,8 +351,9 @@ public class VibratorService extends IVibratorService.Stub
synchronized (mInputDeviceVibrators) {
mVibrateInputDevicesSetting = false;
try {
- mVibrateInputDevicesSetting = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.VIBRATE_INPUT_DEVICES) > 0;
+ mVibrateInputDevicesSetting = Settings.System.getIntForUser(
+ mContext.getContentResolver(),
+ Settings.System.VIBRATE_INPUT_DEVICES, UserHandle.USER_CURRENT) > 0;
} catch (SettingNotFoundException snfe) {
}
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index 024c8fd63d0e..adb63f9b8dcf 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -1090,14 +1090,14 @@ public class WifiService extends IWifiManager.Stub {
*/
private boolean shouldWifiStayAwake(int stayAwakeConditions, int pluggedType) {
//Never sleep as long as the user has not changed the settings
- int wifiSleepPolicy = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.WIFI_SLEEP_POLICY,
- Settings.System.WIFI_SLEEP_POLICY_NEVER);
+ int wifiSleepPolicy = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_SLEEP_POLICY,
+ Settings.Global.WIFI_SLEEP_POLICY_NEVER);
- if (wifiSleepPolicy == Settings.System.WIFI_SLEEP_POLICY_NEVER) {
+ if (wifiSleepPolicy == Settings.Global.WIFI_SLEEP_POLICY_NEVER) {
// Never sleep
return true;
- } else if ((wifiSleepPolicy == Settings.System.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED) &&
+ } else if ((wifiSleepPolicy == Settings.Global.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED) &&
(pluggedType != 0)) {
// Never sleep while plugged, and we're plugged
return true;
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 0e101e1e6bc5..25f98de03f08 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -157,7 +157,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
private final SparseArray<UserState> mUserStates = new SparseArray<UserState>();
- private int mCurrentUserId = UserHandle.USER_NULL;
+ private int mCurrentUserId = UserHandle.USER_OWNER;
private UserState getCurrentUserStateLocked() {
return getUserStateLocked(mCurrentUserId);
@@ -296,12 +296,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
UserState userState = getUserStateLocked(resolvedUserId);
if (mSecurityPolicy.isCallerInteractingAcrossUsers(userId)) {
mGlobalClients.register(client);
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Added global client for pid:" + Binder.getCallingPid());
+ }
return getClientState(userState);
} else {
userState.mClients.register(client);
// If this client is not for the current user we do not
// return a state since it is not for the foreground user.
// We will send the state to the client on a user switch.
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Added user client for pid:" + Binder.getCallingPid()
+ + " and userId:" + mCurrentUserId);
+ }
return (resolvedUserId == mCurrentUserId) ? getClientState(userState) : 0;
}
}
@@ -316,7 +323,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
return true; // yes, recycle the event
}
if (mSecurityPolicy.canDispatchAccessibilityEvent(event)) {
- mSecurityPolicy.updateActiveWindowAndEventSourceLocked(event);
+ mSecurityPolicy.updateEventSourceLocked(event);
+ mMainHandler.obtainMessage(MainHandler.MSG_UPDATE_ACTIVE_WINDOW,
+ event.getWindowId(), event.getEventType()).sendToTarget();
notifyAccessibilityServicesDelayedLocked(event, false);
notifyAccessibilityServicesDelayedLocked(event, true);
}
@@ -399,6 +408,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
wrapper.linkToDeath();
mGlobalInteractionConnections.put(windowId, wrapper);
mGlobalWindowTokens.put(windowId, windowToken.asBinder());
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Added global connection for pid:" + Binder.getCallingPid()
+ + " with windowId: " + windowId);
+ }
} else {
AccessibilityConnectionWrapper wrapper = new AccessibilityConnectionWrapper(
windowId, connection, resolvedUserId);
@@ -406,6 +419,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
UserState userState = getUserStateLocked(resolvedUserId);
userState.mInteractionConnections.put(windowId, wrapper);
userState.mWindowTokens.put(windowId, windowToken.asBinder());
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Added user connection for pid:" + Binder.getCallingPid()
+ + " with windowId: " + windowId + " and userId:" + mCurrentUserId);
+ }
}
if (DEBUG) {
Slog.i(LOG_TAG, "Adding interaction connection to windowId: " + windowId);
@@ -419,26 +436,34 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
mSecurityPolicy.resolveCallingUserIdEnforcingPermissionsLocked(
UserHandle.getCallingUserId());
IBinder token = window.asBinder();
- final boolean removedGlobal =
- removeAccessibilityInteractionConnectionInternalLocked(
+ final int removedWindowId = removeAccessibilityInteractionConnectionInternalLocked(
token, mGlobalWindowTokens, mGlobalInteractionConnections);
- if (removedGlobal) {
+ if (removedWindowId >= 0) {
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Removed global connection for pid:" + Binder.getCallingPid()
+ + " with windowId: " + removedWindowId);
+ }
return;
}
final int userCount = mUserStates.size();
for (int i = 0; i < userCount; i++) {
UserState userState = mUserStates.valueAt(i);
- final boolean removedForUser =
+ final int removedWindowIdForUser =
removeAccessibilityInteractionConnectionInternalLocked(
token, userState.mWindowTokens, userState.mInteractionConnections);
- if (removedForUser) {
+ if (removedWindowIdForUser >= 0) {
+ if (DEBUG) {
+ Slog.i(LOG_TAG, "Removed user connection for pid:" + Binder.getCallingPid()
+ + " with windowId: " + removedWindowIdForUser + " and userId:"
+ + mUserStates.keyAt(i));
+ }
return;
}
}
}
}
- private boolean removeAccessibilityInteractionConnectionInternalLocked(IBinder windowToken,
+ private int removeAccessibilityInteractionConnectionInternalLocked(IBinder windowToken,
SparseArray<IBinder> windowTokens,
SparseArray<AccessibilityConnectionWrapper> interactionConnections) {
final int count = windowTokens.size();
@@ -449,10 +474,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
AccessibilityConnectionWrapper wrapper = interactionConnections.get(windowId);
wrapper.unlinkToDeath();
interactionConnections.remove(windowId);
- return true;
+ return windowId;
}
}
- return false;
+ return -1;
}
public void registerUiTestAutomationService(IAccessibilityServiceClient serviceClient,
@@ -1160,6 +1185,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
public static final int MSG_SEND_STATE_TO_CLIENTS = 2;
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 MainHandler(Looper looper) {
super(looper);
@@ -1195,6 +1221,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
recreateInternalStateLocked(userState);
}
} break;
+ case MSG_UPDATE_ACTIVE_WINDOW: {
+ final int windowId = msg.arg1;
+ final int eventType = msg.arg2;
+ mSecurityPolicy.updateActiveWindow(windowId, eventType);
+ } break;
}
}
@@ -1707,7 +1738,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
return true;
}
- public boolean performGlobalAction(int action) throws RemoteException {
+ public boolean performGlobalAction(int action) {
synchronized (mLock) {
final int resolvedUserId = mSecurityPolicy
.resolveCallingUserIdEnforcingPermissionsLocked(
@@ -1729,7 +1760,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
openRecents();
} return true;
case AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS: {
- expandStatusBar();
+ expandNotifications();
+ } return true;
+ case AccessibilityService.GLOBAL_ACTION_QUICK_SETTINGS: {
+ expandQuickSettings();
} return true;
}
return false;
@@ -1901,12 +1935,22 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
Binder.restoreCallingIdentity(token);
}
- private void expandStatusBar() {
+ private void expandNotifications() {
+ final long token = Binder.clearCallingIdentity();
+
+ StatusBarManager statusBarManager = (StatusBarManager) mContext.getSystemService(
+ android.app.Service.STATUS_BAR_SERVICE);
+ statusBarManager.expandNotifications();
+
+ Binder.restoreCallingIdentity(token);
+ }
+
+ private void expandQuickSettings() {
final long token = Binder.clearCallingIdentity();
StatusBarManager statusBarManager = (StatusBarManager) mContext.getSystemService(
android.app.Service.STATUS_BAR_SERVICE);
- statusBarManager.expand();
+ statusBarManager.expandQuickSettings();
Binder.restoreCallingIdentity(token);
}
@@ -2006,14 +2050,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
|| event.getWindowId() == mActiveWindowId);
}
- public void updateActiveWindowAndEventSourceLocked(AccessibilityEvent event) {
+ public void updateEventSourceLocked(AccessibilityEvent event) {
+ if ((event.getEventType() & RETRIEVAL_ALLOWING_EVENT_TYPES) == 0) {
+ event.setSource(null);
+ }
+ }
+
+ public void updateActiveWindow(int windowId, int eventType) {
// The active window is either the window that has input focus or
// the window that the user is currently touching. If the user is
// touching a window that does not have input focus as soon as the
// the user stops touching that window the focused window becomes
// the active one.
- final int windowId = event.getWindowId();
- final int eventType = event.getEventType();
switch (eventType) {
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: {
if (getFocusedWindowId() == windowId) {
@@ -2024,13 +2072,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
case AccessibilityEvent.TYPE_VIEW_HOVER_EXIT: {
mActiveWindowId = windowId;
} break;
- case AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END: {
+ case AccessibilityEvent.TYPE_TOUCH_INTERACTION_END: {
mActiveWindowId = getFocusedWindowId();
} break;
}
- if ((eventType & RETRIEVAL_ALLOWING_EVENT_TYPES) == 0) {
- event.setSource(null);
- }
}
public int getRetrievalAllowingWindowLocked() {
@@ -2087,7 +2132,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
public boolean isCallerInteractingAcrossUsers(int userId) {
final int callingUid = Binder.getCallingUid();
- return (callingUid == Process.SYSTEM_UID
+ return (Binder.getCallingPid() == android.os.Process.myPid()
|| callingUid == Process.SHELL_UID
|| userId == UserHandle.USER_CURRENT
|| userId == UserHandle.USER_CURRENT_OR_SELF);
@@ -2116,25 +2161,33 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
}
private int getFocusedWindowId() {
- final long identity = Binder.clearCallingIdentity();
try {
// We call this only on window focus change or after touch
// exploration gesture end and the shown windows are not that
// many, so the linear look up is just fine.
IBinder token = mWindowManagerService.getFocusedWindowToken();
if (token != null) {
- SparseArray<IBinder> windows = getCurrentUserStateLocked().mWindowTokens;
- final int windowCount = windows.size();
- for (int i = 0; i < windowCount; i++) {
- if (windows.valueAt(i) == token) {
- return windows.keyAt(i);
+ synchronized (mLock) {
+ int windowId = getFocusedWindowIdLocked(token, mGlobalWindowTokens);
+ if (windowId < 0) {
+ windowId = getFocusedWindowIdLocked(token,
+ getCurrentUserStateLocked().mWindowTokens);
}
+ return windowId;
}
}
} catch (RemoteException re) {
/* ignore */
- } finally {
- Binder.restoreCallingIdentity(identity);
+ }
+ return -1;
+ }
+
+ private int getFocusedWindowIdLocked(IBinder token, SparseArray<IBinder> windows) {
+ final int windowCount = windows.size();
+ for (int i = 0; i < windowCount; i++) {
+ if (windows.valueAt(i) == token) {
+ return windows.keyAt(i);
+ }
}
return -1;
}
diff --git a/services/java/com/android/server/accessibility/ScreenMagnifier.java b/services/java/com/android/server/accessibility/ScreenMagnifier.java
index 48781ac2acbf..b7327080164c 100644
--- a/services/java/com/android/server/accessibility/ScreenMagnifier.java
+++ b/services/java/com/android/server/accessibility/ScreenMagnifier.java
@@ -869,8 +869,22 @@ public final class ScreenMagnifier implements EventStreamTransformation {
mDisplayContentChangeListener = new IDisplayContentChangeListener.Stub() {
@Override
public void onWindowTransition(int displayId, int transition, WindowInfo info) {
- mHandler.obtainMessage(MESSAGE_ON_WINDOW_TRANSITION, transition, 0,
- WindowInfo.obtain(info)).sendToTarget();
+ Message message = mHandler.obtainMessage(MESSAGE_ON_WINDOW_TRANSITION,
+ transition, 0, WindowInfo.obtain(info));
+ // TODO: This makes me quite unhappy but for the time being the
+ // least risky fix for cases where the keyguard is removed but
+ // the windows it force hides are not made visible yet. Hence,
+ // we would compute the magnified frame before we have a stable
+ // state. One more reason to move the magnified frame computation
+ // in the window manager!
+ if (info.type == WindowManager.LayoutParams.TYPE_KEYGUARD
+ || info.type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
+ && (transition == WindowManagerPolicy.TRANSIT_EXIT
+ || transition == WindowManagerPolicy.TRANSIT_HIDE)) {
+ mHandler.sendMessageDelayed(message, mLongAnimationDuration);
+ } else {
+ message.sendToTarget();
+ }
}
@Override
diff --git a/services/java/com/android/server/accessibility/TouchExplorer.java b/services/java/com/android/server/accessibility/TouchExplorer.java
index c84f988fbc4c..921bed7c6c8c 100644
--- a/services/java/com/android/server/accessibility/TouchExplorer.java
+++ b/services/java/com/android/server/accessibility/TouchExplorer.java
@@ -25,7 +25,6 @@ import android.gesture.GestureStore;
import android.gesture.GestureStroke;
import android.gesture.Prediction;
import android.graphics.Rect;
-import android.os.Build;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Slog;
@@ -687,15 +686,10 @@ class TouchExplorer implements EventStreamTransformation {
}
} break;
case MotionEvent.ACTION_POINTER_UP: {
- final int activePointerCount = mReceivedPointerTracker.getActivePointerCount();
- switch (activePointerCount) {
- case 1: {
- // Send an event to the end of the drag gesture.
- sendMotionEvent(event, MotionEvent.ACTION_UP, pointerIdBits, policyFlags);
- } break;
- default: {
- mCurrentState = STATE_TOUCH_EXPLORING;
- }
+ final int pointerId = event.getPointerId(event.getActionIndex());
+ if (mReceivedPointerTracker.isActiveOrWasLastActiveUpPointer(pointerId)) {
+ sendUpForInjectedDownPointers(event, policyFlags);
+ mCurrentState = STATE_TOUCH_EXPLORING;
}
} break;
case MotionEvent.ACTION_UP: {
@@ -1676,7 +1670,7 @@ class TouchExplorer implements EventStreamTransformation {
*/
public ReceivedPointerTracker(Context context) {
mThresholdActivePointer =
- ViewConfiguration.get(context).getScaledTouchSlop() * COEFFICIENT_ACTIVE_POINTER;//Heie govna
+ ViewConfiguration.get(context).getScaledTouchSlop() * COEFFICIENT_ACTIVE_POINTER;
}
/**
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 904c98edec96..b266bd4df121 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -2266,8 +2266,8 @@ public final class ActivityManagerService extends ActivityManagerNative
// low-level factory test mode.
final ContentResolver resolver = mContext.getContentResolver();
if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL &&
- Settings.Secure.getInt(resolver,
- Settings.Secure.DEVICE_PROVISIONED, 0) != 0) {
+ Settings.Global.getInt(resolver,
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0) {
mCheckedForSetup = true;
// See if we should be showing the platform update setup UI.
@@ -2623,10 +2623,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
public final int startActivities(IApplicationThread caller,
- Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle options) {
+ Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle options,
+ int userId) {
enforceNotIsolatedCaller("startActivities");
+ userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId,
+ false, true, "startActivity", null);
int ret = mMainStack.startActivities(caller, -1, intents, resolvedTypes, resultTo,
- options, UserHandle.getCallingUserId());
+ options, userId);
return ret;
}
@@ -8309,8 +8312,8 @@ public final class ActivityManagerService extends ActivityManagerNative
addErrorToDropBox("wtf", r, processName, null, null, tag, null, null, crashInfo);
if (r != null && r.pid != Process.myPid() &&
- Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.WTF_IS_FATAL, 0) != 0) {
+ Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WTF_IS_FATAL, 0) != 0) {
crashApplication(r, crashInfo);
return true;
} else {
@@ -12412,7 +12415,7 @@ public final class ActivityManagerService extends ActivityManagerNative
} else {
try {
ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo(
- destIntent.getComponent(), 0, UserHandle.getCallingUserId());
+ destIntent.getComponent(), 0, srec.userId);
int res = mMainStack.startActivityLocked(srec.app.thread, destIntent,
null, aInfo, parent.appToken, null,
0, -1, parent.launchedFromUid, 0, null, true, null);
diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java
index d8f35465d405..b38d617b5d26 100644
--- a/services/java/com/android/server/connectivity/Tethering.java
+++ b/services/java/com/android/server/connectivity/Tethering.java
@@ -627,8 +627,8 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
}
public void checkDunRequired() {
- int secureSetting = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.TETHER_DUN_REQUIRED, 2);
+ int secureSetting = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.TETHER_DUN_REQUIRED, 2);
synchronized (mPublicSync) {
// 2 = not set, 0 = DUN not required, 1 = DUN required
if (secureSetting != 2) {
diff --git a/services/java/com/android/server/display/OverlayDisplayAdapter.java b/services/java/com/android/server/display/OverlayDisplayAdapter.java
index 75ddd244d9c2..0767fc05d700 100644
--- a/services/java/com/android/server/display/OverlayDisplayAdapter.java
+++ b/services/java/com/android/server/display/OverlayDisplayAdapter.java
@@ -19,10 +19,14 @@ package com.android.server.display;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.IBinder;
+import android.os.UserHandle;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Slog;
@@ -88,19 +92,28 @@ final class OverlayDisplayAdapter extends DisplayAdapter {
@Override
public void run() {
getContext().getContentResolver().registerContentObserver(
- Settings.System.getUriFor(Settings.Secure.OVERLAY_DISPLAY_DEVICES),
- true, new SettingsObserver(getHandler()));
-
- synchronized (getSyncRoot()) {
- updateOverlayDisplayDevicesLocked();
- }
+ Settings.Global.getUriFor(Settings.Global.OVERLAY_DISPLAY_DEVICES),
+ true, new ContentObserver(getHandler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ updateOverlayDisplayDevices();
+ }
+ });
+
+ updateOverlayDisplayDevices();
}
});
}
+ private void updateOverlayDisplayDevices() {
+ synchronized (getSyncRoot()) {
+ updateOverlayDisplayDevicesLocked();
+ }
+ }
+
private void updateOverlayDisplayDevicesLocked() {
- String value = Settings.System.getString(getContext().getContentResolver(),
- Settings.Secure.OVERLAY_DISPLAY_DEVICES);
+ String value = Settings.Global.getString(getContext().getContentResolver(),
+ Settings.Global.OVERLAY_DISPLAY_DEVICES);
if (value == null) {
value = "";
}
@@ -171,19 +184,6 @@ final class OverlayDisplayAdapter extends DisplayAdapter {
}
}
- private final class SettingsObserver extends ContentObserver {
- public SettingsObserver(Handler handler) {
- super(handler);
- }
-
- @Override
- public void onChange(boolean selfChange) {
- synchronized (getSyncRoot()) {
- updateOverlayDisplayDevicesLocked();
- }
- }
- }
-
private final class OverlayDisplayDevice extends DisplayDevice {
private final String mName;
private final int mWidth;
diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/java/com/android/server/input/InputManagerService.java
index 948c0e038308..0b4a721ac210 100644
--- a/services/java/com/android/server/input/InputManagerService.java
+++ b/services/java/com/android/server/input/InputManagerService.java
@@ -241,6 +241,14 @@ public class InputManagerService extends IInputManager.Stub
registerPointerSpeedSettingObserver();
registerShowTouchesSettingObserver();
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ updatePointerSpeedFromSettings();
+ updateShowTouchesFromSettings();
+ }
+ }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler);
+
updatePointerSpeedFromSettings();
updateShowTouchesFromSettings();
}
@@ -1073,14 +1081,14 @@ public class InputManagerService extends IInputManager.Stub
public void onChange(boolean selfChange) {
updatePointerSpeedFromSettings();
}
- });
+ }, UserHandle.USER_ALL);
}
private int getPointerSpeedSetting() {
int speed = InputManager.DEFAULT_POINTER_SPEED;
try {
- speed = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.POINTER_SPEED);
+ speed = Settings.System.getIntForUser(mContext.getContentResolver(),
+ Settings.System.POINTER_SPEED, UserHandle.USER_CURRENT);
} catch (SettingNotFoundException snfe) {
}
return speed;
@@ -1099,14 +1107,14 @@ public class InputManagerService extends IInputManager.Stub
public void onChange(boolean selfChange) {
updateShowTouchesFromSettings();
}
- });
+ }, UserHandle.USER_ALL);
}
private int getShowTouchesSetting(int defaultValue) {
int result = defaultValue;
try {
- result = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.SHOW_TOUCHES);
+ result = Settings.System.getIntForUser(mContext.getContentResolver(),
+ Settings.System.SHOW_TOUCHES, UserHandle.USER_CURRENT);
} catch (SettingNotFoundException snfe) {
}
return result;
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index bb11fe7b77bf..28870a283ce3 100755
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -535,8 +535,8 @@ public class GpsLocationProvider implements LocationProviderInterface {
}
if (info != null) {
- boolean dataEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.MOBILE_DATA, 1) == 1;
+ boolean dataEnabled = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.MOBILE_DATA, 1) == 1;
boolean networkAvailable = info.isAvailable() && dataEnabled;
String defaultApn = getSelectedApn();
if (defaultApn == null) {
@@ -952,8 +952,8 @@ public class GpsLocationProvider implements LocationProviderInterface {
mStarted = true;
mPositionMode = GPS_POSITION_MODE_STANDALONE;
- if (Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.ASSISTED_GPS_ENABLED, 1) != 0) {
+ if (Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.ASSISTED_GPS_ENABLED, 1) != 0) {
if (hasCapability(GPS_CAPABILITY_MSB)) {
mPositionMode = GPS_POSITION_MODE_MS_BASED;
}
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 4800e7dbb5ea..c4cdd07b8f38 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -5907,8 +5907,8 @@ public class PackageManagerService extends IPackageManager.Stub {
* @return the current "allow unknown sources" setting
*/
private int getUnknownSourcesSettings() {
- return android.provider.Settings.Secure.getInt(mContext.getContentResolver(),
- android.provider.Settings.Secure.INSTALL_NON_MARKET_APPS,
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),
+ android.provider.Settings.Global.INSTALL_NON_MARKET_APPS,
-1);
}
diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java
index 7052ed57c99f..030eb5eae65d 100644
--- a/services/java/com/android/server/power/PowerManagerService.java
+++ b/services/java/com/android/server/power/PowerManagerService.java
@@ -48,6 +48,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.os.WorkSource;
import android.provider.Settings;
import android.service.dreams.Dream;
@@ -357,34 +358,44 @@ public final class PowerManagerService extends IPowerManager.Stub
// Register for broadcasts from other components of the system.
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
- mContext.registerReceiver(new BatteryReceiver(), filter);
+ mContext.registerReceiver(new BatteryReceiver(), filter, null, mHandler);
filter = new IntentFilter();
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
- mContext.registerReceiver(new BootCompletedReceiver(), filter);
+ mContext.registerReceiver(new BootCompletedReceiver(), filter, null, mHandler);
filter = new IntentFilter();
filter.addAction(Intent.ACTION_DOCK_EVENT);
- mContext.registerReceiver(new DockReceiver(), filter);
+ mContext.registerReceiver(new DockReceiver(), filter, null, mHandler);
filter = new IntentFilter();
filter.addAction(Dream.ACTION_DREAMING_STOPPED);
- mContext.registerReceiver(new DreamReceiver(), filter);
+ mContext.registerReceiver(new DreamReceiver(), filter, null, mHandler);
+
+ filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_USER_SWITCHED);
+ mContext.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler);
// Register for settings changes.
final ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.SCREENSAVER_ENABLED), false, mSettingsObserver);
+ Settings.Secure.SCREENSAVER_ENABLED),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP), false, mSettingsObserver);
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.SCREEN_OFF_TIMEOUT), false, mSettingsObserver);
+ Settings.System.SCREEN_OFF_TIMEOUT),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Global.getUriFor(
- Settings.Global.STAY_ON_WHILE_PLUGGED_IN), false, mSettingsObserver);
+ Settings.Global.STAY_ON_WHILE_PLUGGED_IN),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.SCREEN_BRIGHTNESS), false, mSettingsObserver);
+ Settings.System.SCREEN_BRIGHTNESS),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.SCREEN_BRIGHTNESS_MODE), false, mSettingsObserver);
+ Settings.System.SCREEN_BRIGHTNESS_MODE),
+ false, mSettingsObserver, UserHandle.USER_ALL);
// Go.
readConfigurationLocked();
@@ -406,34 +417,38 @@ public final class PowerManagerService extends IPowerManager.Stub
private void updateSettingsLocked() {
final ContentResolver resolver = mContext.getContentResolver();
- mDreamsEnabledSetting = (Settings.Secure.getInt(resolver,
- Settings.Secure.SCREENSAVER_ENABLED, 0) != 0);
- mDreamsActivateOnSleepSetting = (Settings.Secure.getInt(resolver,
- Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0) != 0);
- mScreenOffTimeoutSetting = Settings.System.getInt(resolver,
- Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT);
+ mDreamsEnabledSetting = (Settings.Secure.getIntForUser(resolver,
+ Settings.Secure.SCREENSAVER_ENABLED, 0,
+ UserHandle.USER_CURRENT) != 0);
+ mDreamsActivateOnSleepSetting = (Settings.Secure.getIntForUser(resolver,
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0,
+ UserHandle.USER_CURRENT) != 0);
+ mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver,
+ Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT,
+ UserHandle.USER_CURRENT);
mStayOnWhilePluggedInSetting = Settings.Global.getInt(resolver,
- Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
- BatteryManager.BATTERY_PLUGGED_AC);
+ Settings.Global.STAY_ON_WHILE_PLUGGED_IN, BatteryManager.BATTERY_PLUGGED_AC);
final int oldScreenBrightnessSetting = mScreenBrightnessSetting;
- mScreenBrightnessSetting = Settings.System.getInt(resolver,
- Settings.System.SCREEN_BRIGHTNESS, mScreenBrightnessSettingDefault);
+ mScreenBrightnessSetting = Settings.System.getIntForUser(resolver,
+ Settings.System.SCREEN_BRIGHTNESS, mScreenBrightnessSettingDefault,
+ UserHandle.USER_CURRENT);
if (oldScreenBrightnessSetting != mScreenBrightnessSetting) {
mTemporaryScreenBrightnessSettingOverride = -1;
}
final float oldScreenAutoBrightnessAdjustmentSetting =
mScreenAutoBrightnessAdjustmentSetting;
- mScreenAutoBrightnessAdjustmentSetting = Settings.System.getFloat(resolver,
- Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, 0.0f);
+ mScreenAutoBrightnessAdjustmentSetting = Settings.System.getFloatForUser(resolver,
+ Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, 0.0f,
+ UserHandle.USER_CURRENT);
if (oldScreenAutoBrightnessAdjustmentSetting != mScreenAutoBrightnessAdjustmentSetting) {
mTemporaryScreenAutoBrightnessAdjustmentSettingOverride = Float.NaN;
}
- mScreenBrightnessModeSetting = Settings.System.getInt(resolver,
+ mScreenBrightnessModeSetting = Settings.System.getIntForUser(resolver,
Settings.System.SCREEN_BRIGHTNESS_MODE,
- Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+ Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL, UserHandle.USER_CURRENT);
mDirty |= DIRTY_SETTINGS;
}
@@ -1962,6 +1977,15 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
+ private final class UserSwitchedReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ synchronized (mLock) {
+ handleSettingsChangedLocked();
+ }
+ }
+ }
+
private final class SettingsObserver extends ContentObserver {
public SettingsObserver(Handler handler) {
super(handler);
diff --git a/services/java/com/android/server/usb/UsbDeviceManager.java b/services/java/com/android/server/usb/UsbDeviceManager.java
index 8f135011aeb6..10011aadf6cb 100644
--- a/services/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/java/com/android/server/usb/UsbDeviceManager.java
@@ -124,8 +124,8 @@ public class UsbDeviceManager {
}
@Override
public void onChange(boolean selfChange) {
- boolean enable = (Settings.Secure.getInt(mContentResolver,
- Settings.Secure.ADB_ENABLED, 0) > 0);
+ boolean enable = (Settings.Global.getInt(mContentResolver,
+ Settings.Global.ADB_ENABLED, 0) > 0);
mHandler.sendMessage(MSG_ENABLE_ADB, enable);
}
}
@@ -190,7 +190,7 @@ public class UsbDeviceManager {
mUseUsbNotification = !massStorageSupported;
// make sure the ADB_ENABLED setting value matches the current state
- Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED, mAdbEnabled ? 1 : 0);
+ Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, mAdbEnabled ? 1 : 0);
mHandler.sendEmptyMessage(MSG_SYSTEM_READY);
}
@@ -351,7 +351,7 @@ public class UsbDeviceManager {
// register observer to listen for settings changes
mContentResolver.registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.ADB_ENABLED),
+ Settings.Global.getUriFor(Settings.Global.ADB_ENABLED),
false, new AdbSettingsObserver());
// Watch for USB configuration changes
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index c09c261d15ea..efedbd881c82 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -7946,8 +7946,8 @@ public class WindowManagerService extends IWindowManager.Stub
synchronized(mWindowMap) {
final DisplayContent displayContent = getDisplayContentLocked(displayId);
setForcedDisplayDensityLocked(displayContent, displayContent.mInitialDisplayDensity);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_DENSITY_FORCED, "");
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_DENSITY_FORCED, "");
}
}
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 5f40709d353b..acf452ffc713 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -1055,8 +1055,12 @@ class WindowStateAnimator {
// just keep the crop rect the same as the source surface.
w.mSystemDecorRect.set(0, 0, w.mRequestedWidth, w.mRequestedHeight);
} else if (!w.isDefaultDisplay()) {
- // On a different display is easy, just use the entire display.
- w.mSystemDecorRect.set(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
+ // On a different display there is no system decor. Crop the window
+ // by the screen boundaries.
+ w.mSystemDecorRect.set(0, 0, w.mCompatFrame.width(), w.mCompatFrame.height());
+ w.mSystemDecorRect.intersect(-w.mCompatFrame.left, -w.mCompatFrame.top,
+ displayInfo.logicalWidth - w.mCompatFrame.left,
+ displayInfo.logicalHeight - w.mCompatFrame.top);
} else if (w.mLayer >= mService.mSystemDecorLayer) {
// Above the decor layer is easy, just use the entire window.
// Unless we have a universe background... in which case all the
diff --git a/services/jni/com_android_server_power_PowerManagerService.cpp b/services/jni/com_android_server_power_PowerManagerService.cpp
index 3f3970bf071b..38af38d232b3 100644
--- a/services/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/jni/com_android_server_power_PowerManagerService.cpp
@@ -174,32 +174,32 @@ static void nativeSetScreenState(JNIEnv *env, jclass clazz, jboolean on) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (on) {
{
- ALOGD_IF_SLOW(50, "Excessive delay in autosuspend_disable() while turning screen on");
+ ALOGD_IF_SLOW(100, "Excessive delay in autosuspend_disable() while turning screen on");
autosuspend_disable();
}
if (gPowerModule) {
- ALOGD_IF_SLOW(10, "Excessive delay in setInteractive(true) while turning screen on");
+ ALOGD_IF_SLOW(20, "Excessive delay in setInteractive(true) while turning screen on");
gPowerModule->setInteractive(gPowerModule, true);
}
{
- ALOGD_IF_SLOW(20, "Excessive delay in unblank() while turning screen on");
+ ALOGD_IF_SLOW(100, "Excessive delay in unblank() while turning screen on");
s->unblank();
}
} else {
{
- ALOGD_IF_SLOW(20, "Excessive delay in blank() while turning screen off");
+ ALOGD_IF_SLOW(100, "Excessive delay in blank() while turning screen off");
s->blank();
}
if (gPowerModule) {
- ALOGD_IF_SLOW(10, "Excessive delay in setInteractive(false) while turning screen off");
+ ALOGD_IF_SLOW(20, "Excessive delay in setInteractive(false) while turning screen off");
gPowerModule->setInteractive(gPowerModule, false);
}
{
- ALOGD_IF_SLOW(50, "Excessive delay in autosuspend_enable() while turning screen off");
+ ALOGD_IF_SLOW(100, "Excessive delay in autosuspend_enable() while turning screen off");
autosuspend_enable();
}
}
diff --git a/core/tests/coretests/res/raw/test1.obb b/services/tests/servicestests/res/raw/test1.obb
index 846658845bb3..7d2b4f6e6fbd 100644
--- a/core/tests/coretests/res/raw/test1.obb
+++ b/services/tests/servicestests/res/raw/test1.obb
Binary files differ
diff --git a/core/tests/coretests/res/raw/test1_nosig.obb b/services/tests/servicestests/res/raw/test1_nosig.obb
index 5c3573f72a1e..5c3573f72a1e 100644
--- a/core/tests/coretests/res/raw/test1_nosig.obb
+++ b/services/tests/servicestests/res/raw/test1_nosig.obb
Binary files differ
diff --git a/core/tests/coretests/res/raw/test1_wrongpackage.obb b/services/tests/servicestests/res/raw/test1_wrongpackage.obb
index d0aafe16e1ac..d0aafe16e1ac 100644
--- a/core/tests/coretests/res/raw/test1_wrongpackage.obb
+++ b/services/tests/servicestests/res/raw/test1_wrongpackage.obb
Binary files differ
diff --git a/core/tests/coretests/src/com/android/server/MountServiceTests.java b/services/tests/servicestests/src/com/android/server/MountServiceTests.java
index 1f8c92ef94a7..9c88b406ccf3 100644
--- a/core/tests/coretests/src/com/android/server/MountServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/MountServiceTests.java
@@ -16,8 +16,6 @@
package com.android.server;
-import com.android.frameworks.coretests.R;
-
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
@@ -29,6 +27,10 @@ import android.test.ComparisonFailure;
import android.test.suitebuilder.annotation.LargeTest;
import android.util.Log;
+import static com.android.server.MountService.buildObbPath;
+
+import com.android.frameworks.servicestests.R;
+
import java.io.File;
import java.io.InputStream;
@@ -282,4 +284,34 @@ public class MountServiceTests extends AndroidTestCase {
unmountObb(sm, file1, OnObbStateChangeListener.UNMOUNTED);
unmountObb(sm, file2, OnObbStateChangeListener.UNMOUNTED);
}
+
+ public void testBuildObbPath() {
+ final int userId = 10;
+
+ // Paths outside external storage should remain untouched
+ assertEquals("/storage/random/foo",
+ buildObbPath("/storage/random/foo", userId, true));
+ assertEquals("/storage/random/foo",
+ buildObbPath("/storage/random/foo", userId, false));
+
+ // Paths on user-specific emulated storage
+ assertEquals("/mnt/shell/emulated/10/foo",
+ buildObbPath("/storage/emulated_legacy/foo", userId, true));
+ assertEquals("/storage/emulated/10/foo",
+ buildObbPath("/storage/emulated_legacy/foo", userId, false));
+ assertEquals("/mnt/shell/emulated/10/foo",
+ buildObbPath("/storage/emulated/10/foo", userId, true));
+ assertEquals("/storage/emulated/10/foo",
+ buildObbPath("/storage/emulated/10/foo", userId, false));
+
+ // Paths on shared OBB emulated storage
+ assertEquals("/mnt/shell/emulated/obb/foo",
+ buildObbPath("/storage/emulated_legacy/Android/obb/foo", userId, true));
+ assertEquals("/storage/emulated/0/Android/obb/foo",
+ buildObbPath("/storage/emulated_legacy/Android/obb/foo", userId, false));
+ assertEquals("/mnt/shell/emulated/obb/foo",
+ buildObbPath("/storage/emulated/10/Android/obb/foo", userId, true));
+ assertEquals("/storage/emulated/0/Android/obb/foo",
+ buildObbPath("/storage/emulated/10/Android/obb/foo", userId, false));
+ }
}
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 7b7a7b3e69ca..2eba4e116542 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -40,6 +40,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.VerificationParams;
import android.content.pm.VerifierDeviceIdentity;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable;
@@ -371,6 +372,12 @@ public class MockPackageManager extends PackageManager {
throw new UnsupportedOperationException();
}
+ /** @hide */
+ @Override
+ public Resources getResourcesForApplicationAsUser(String appPackageName, int userId) {
+ throw new UnsupportedOperationException();
+ }
+
@Override
public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags) {
throw new UnsupportedOperationException();
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
index c171a64cabd9..a8462e6e6449 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
@@ -377,7 +377,7 @@ public class ImageProcessingActivity extends Activity
long result = 0;
//Log.v(TAG, "Warming");
- long t = java.lang.System.currentTimeMillis() + 2000;
+ long t = java.lang.System.currentTimeMillis() + 250;
do {
mTest.runTest();
mTest.finish();
@@ -391,7 +391,7 @@ public class ImageProcessingActivity extends Activity
mTest.runTest();
mTest.finish();
ct++;
- } while ((t+5000) > java.lang.System.currentTimeMillis());
+ } while ((t+1000) > java.lang.System.currentTimeMillis());
t = java.lang.System.currentTimeMillis() - t;
float ft = (float)t;
ft /= ct;
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
index 455fcc2f42e5..981282795b57 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
@@ -30,15 +30,15 @@ void root(uchar4 *out, uint32_t x, uint32_t y) {
uint32_t y1 = min((int32_t)y+1, gHeight-1);
uint32_t y2 = max((int32_t)y-1, 0);
- float4 p00 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y1))[0]);
- float4 p01 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x, y1))[0]);
- float4 p02 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y1))[0]);
- float4 p10 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y))[0]);
- float4 p11 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x, y))[0]);
- float4 p12 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y))[0]);
- float4 p20 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y2))[0]);
- float4 p21 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x, y2))[0]);
- float4 p22 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y2))[0]);
+ float4 p00 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y1));
+ float4 p01 = convert_float4(rsGetElementAt_uchar4(gIn, x, y1));
+ float4 p02 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y1));
+ float4 p10 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y));
+ float4 p11 = convert_float4(rsGetElementAt_uchar4(gIn, x, y));
+ float4 p12 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y));
+ float4 p20 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y2));
+ float4 p21 = convert_float4(rsGetElementAt_uchar4(gIn, x, y2));
+ float4 p22 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y2));
p00 *= gCoeffs[0];
p01 *= gCoeffs[1];
p02 *= gCoeffs[2];
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
index fe6cf31ea5ca..e6d03c9c0554 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
@@ -37,35 +37,35 @@ void root(uchar4 *out, uint32_t x, uint32_t y) {
uint32_t y3 = min((int32_t)y+1, gHeight-1);
uint32_t y4 = min((int32_t)y+2, gHeight-1);
- float4 p0 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x0, y0))[0]) * gCoeffs[0]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y0))[0]) * gCoeffs[1]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y0))[0]) * gCoeffs[2]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x3, y0))[0]) * gCoeffs[3]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x4, y0))[0]) * gCoeffs[4];
+ float4 p0 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y0)) * gCoeffs[0]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x1, y0)) * gCoeffs[1]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x2, y0)) * gCoeffs[2]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x3, y0)) * gCoeffs[3]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x4, y0)) * gCoeffs[4];
- float4 p1 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x0, y1))[0]) * gCoeffs[5]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y1))[0]) * gCoeffs[6]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y1))[0]) * gCoeffs[7]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x3, y1))[0]) * gCoeffs[8]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x4, y1))[0]) * gCoeffs[9];
+ float4 p1 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y1)) * gCoeffs[5]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x1, y1)) * gCoeffs[6]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x2, y1)) * gCoeffs[7]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x3, y1)) * gCoeffs[8]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x4, y1)) * gCoeffs[9];
- float4 p2 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x0, y2))[0]) * gCoeffs[10]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y2))[0]) * gCoeffs[11]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y2))[0]) * gCoeffs[12]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x3, y2))[0]) * gCoeffs[13]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x4, y2))[0]) * gCoeffs[14];
+ float4 p2 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y2)) * gCoeffs[10]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x1, y2)) * gCoeffs[11]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x2, y2)) * gCoeffs[12]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x3, y2)) * gCoeffs[13]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x4, y2)) * gCoeffs[14];
- float4 p3 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x0, y3))[0]) * gCoeffs[15]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y3))[0]) * gCoeffs[16]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y3))[0]) * gCoeffs[17]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x3, y3))[0]) * gCoeffs[18]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x4, y3))[0]) * gCoeffs[19];
+ float4 p3 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y3)) * gCoeffs[15]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x1, y3)) * gCoeffs[16]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x2, y3)) * gCoeffs[17]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x3, y3)) * gCoeffs[18]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x4, y3)) * gCoeffs[19];
- float4 p4 = convert_float4(((uchar4 *)rsGetElementAt(gIn, x0, y4))[0]) * gCoeffs[20]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x1, y4))[0]) * gCoeffs[21]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x2, y4))[0]) * gCoeffs[22]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x3, y4))[0]) * gCoeffs[23]
- + convert_float4(((uchar4 *)rsGetElementAt(gIn, x4, y4))[0]) * gCoeffs[24];
+ float4 p4 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y4)) * gCoeffs[20]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x1, y4)) * gCoeffs[21]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x2, y4)) * gCoeffs[22]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x3, y4)) * gCoeffs[23]
+ + convert_float4(rsGetElementAt_uchar4(gIn, x4, y4)) * gCoeffs[24];
p0 = clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f);
*out = convert_uchar4(p0);
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs
index 783bc4a29cc0..ea425243c4e2 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs
@@ -48,15 +48,15 @@ void blend9(uchar *out, uint32_t x, uint32_t y) {
uint32_t y1 = min((int32_t)y+1, (int32_t)(gHeight -1));
uint32_t y2 = max((int32_t)y-1, (int32_t)0);
- uint p00 = 56 * ((uchar *)rsGetElementAt(gBlendSource, x1, y1))[0];
- uint p01 = 114 * ((uchar *)rsGetElementAt(gBlendSource, x, y1))[0];
- uint p02 = 56 * ((uchar *)rsGetElementAt(gBlendSource, x2, y1))[0];
- uint p10 = 114 * ((uchar *)rsGetElementAt(gBlendSource, x1, y))[0];
- uint p11 = 230 * ((uchar *)rsGetElementAt(gBlendSource, x, y))[0];
- uint p12 = 114 * ((uchar *)rsGetElementAt(gBlendSource, x2, y))[0];
- uint p20 = 56 * ((uchar *)rsGetElementAt(gBlendSource, x1, y2))[0];
- uint p21 = 114 * ((uchar *)rsGetElementAt(gBlendSource, x, y2))[0];
- uint p22 = 56 * ((uchar *)rsGetElementAt(gBlendSource, x2, y2))[0];
+ uint p00 = 56 * rsGetElementAt_uchar(gBlendSource, x1, y1);
+ uint p01 = 114 * rsGetElementAt_uchar(gBlendSource, x, y1);
+ uint p02 = 56 * rsGetElementAt_uchar(gBlendSource, x2, y1);
+ uint p10 = 114 * rsGetElementAt_uchar(gBlendSource, x1, y);
+ uint p11 = 230 * rsGetElementAt_uchar(gBlendSource, x, y);
+ uint p12 = 114 * rsGetElementAt_uchar(gBlendSource, x2, y);
+ uint p20 = 56 * rsGetElementAt_uchar(gBlendSource, x1, y2);
+ uint p21 = 114 * rsGetElementAt_uchar(gBlendSource, x, y2);
+ uint p22 = 56 * rsGetElementAt_uchar(gBlendSource, x2, y2);
p00 += p01;
p02 += p10;
@@ -78,7 +78,7 @@ float gNoiseStrength;
rs_allocation gNoise;
void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
float4 ip = convert_float4(*in);
- float pnoise = (float) ((uchar *)rsGetElementAt(gNoise, x, y))[0];
+ float pnoise = (float) rsGetElementAt_uchar(gNoise, x, y);
float energy_level = ip.r + ip.g + ip.b;
float energy_mask = (28.f - sqrt(energy_level)) * 0.03571f;
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 94ad620bd801..3b6e1074c8b9 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -16,29 +16,15 @@
package com.android.statusbartest;
-import android.app.ListActivity;
import android.app.Notification;
import android.app.NotificationManager;
-import android.widget.ArrayAdapter;
import android.view.View;
-import android.widget.ListView;
import android.content.Intent;
import android.app.PendingIntent;
-import android.app.Notification;
-import android.app.NotificationManager;
import android.app.StatusBarManager;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.os.Vibrator;
-import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
-import android.net.Uri;
import android.os.SystemClock;
-import android.widget.RemoteViews;
-import android.widget.Toast;
-import android.os.PowerManager;
-import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -300,14 +286,14 @@ public class StatusBarTest extends TestActivity
},
new Test("Expand") {
public void run() {
- mStatusBarManager.expand();
+ mStatusBarManager.expandNotifications();
}
},
new Test("Expand in 3 sec.") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- mStatusBarManager.expand();
+ mStatusBarManager.expandNotifications();
}
}, 3000);
}
@@ -316,7 +302,7 @@ public class StatusBarTest extends TestActivity
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- mStatusBarManager.collapse();
+ mStatusBarManager.collapseNotifications();
}
}, 3000);
}
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index aa591582dfca..75b8bcf94d74 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -540,7 +540,8 @@ public class WifiManager {
* <li>allowedGroupCiphers</li>
* </ul>
* @return a list of network configurations in the form of a list
- * of {@link WifiConfiguration} objects.
+ * of {@link WifiConfiguration} objects. Upon failure to fetch or
+ * when when Wi-Fi is turned off, it can be null.
*/
public List<WifiConfiguration> getConfiguredNetworks() {
try {
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 4aa092b7bd12..e7927aeb598f 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -1060,8 +1060,8 @@ public class WifiStateMachine extends StateMachine {
*/
public void setCountryCode(String countryCode, boolean persist) {
if (persist) {
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.WIFI_COUNTRY_CODE,
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.WIFI_COUNTRY_CODE,
countryCode);
}
sendMessage(obtainMessage(CMD_SET_COUNTRY_CODE, countryCode));
@@ -1318,8 +1318,8 @@ public class WifiStateMachine extends StateMachine {
* Set the country code from the system setting value, if any.
*/
private void setCountryCode() {
- String countryCode = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.WIFI_COUNTRY_CODE);
+ String countryCode = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.WIFI_COUNTRY_CODE);
if (countryCode != null && !countryCode.isEmpty()) {
setCountryCode(countryCode, false);
} else {
@@ -1609,8 +1609,8 @@ public class WifiStateMachine extends StateMachine {
}
private int getMaxDhcpRetries() {
- return Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.WIFI_MAX_DHCP_RETRY_COUNT,
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT,
DEFAULT_MAX_DHCP_RETRIES);
}