diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 9350aab799a92..d17223671ed56 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -571,9 +571,7 @@ public class Camera { /** * An empty Camera for testing purpose. */ - Camera() { - initAppOps(); - } + Camera() {} private void initAppOps() { IBinder b = ServiceManager.getService(Context.APP_OPS_SERVICE); @@ -807,7 +805,10 @@ public class Camera { * * @throws RuntimeException if starting preview fails; usually this would be * because of a hardware or other low-level error, or because release() - * has been called on this Camera instance. + * has been called on this Camera instance. The QCIF (176x144) exception + * mentioned in {@link Parameters#setPreviewSize setPreviewSize} and + * {@link Parameters#setPictureSize setPictureSize} can also cause this + * exception be thrown. */ public native final void startPreview(); @@ -2848,6 +2849,16 @@ public class Camera { * orientation should also be considered while setting picture size and * thumbnail size. * + * Exception on 176x144 (QCIF) resolution: + * Camera devices usually have a fixed capability for downscaling from + * larger resolution to smaller, and the QCIF resolution sometimes + * is not fully supported due to this limitation on devices with + * high-resolution image sensors. Therefore, trying to configure a QCIF + * preview size with any picture or video size larger than 1920x1080 + * (either width or height) might not be supported, and + * {@link #setParameters(Camera.Parameters)} might throw a + * RuntimeException if it is not. + * * @param width the width of the pictures, in pixels * @param height the height of the pictures, in pixels * @see #setDisplayOrientation(int) @@ -2893,6 +2904,16 @@ public class Camera { * preview can be different from the resolution of the recorded video * during video recording.

* + *

Exception on 176x144 (QCIF) resolution: + * Camera devices usually have a fixed capability for downscaling from + * larger resolution to smaller, and the QCIF resolution sometimes + * is not fully supported due to this limitation on devices with + * high-resolution image sensors. Therefore, trying to configure a QCIF + * video resolution with any preview or picture size larger than + * 1920x1080 (either width or height) might not be supported, and + * {@link #setParameters(Camera.Parameters)} will throw a + * RuntimeException if it is not.

+ * * @return a list of Size object if camera has separate preview and * video output; otherwise, null is returned. * @see #getPreferredPreviewSizeForVideo() @@ -3187,6 +3208,16 @@ public class Camera { *

Applications need to consider the display orientation. See {@link * #setPreviewSize(int,int)} for reference.

* + *

Exception on 176x144 (QCIF) resolution: + * Camera devices usually have a fixed capability for downscaling from + * larger resolution to smaller, and the QCIF resolution sometimes + * is not fully supported due to this limitation on devices with + * high-resolution image sensors. Therefore, trying to configure a QCIF + * picture size with any preview or video size larger than 1920x1080 + * (either width or height) might not be supported, and + * {@link #setParameters(Camera.Parameters)} might throw a + * RuntimeException if it is not.

+ * * @param width the width for pictures, in pixels * @param height the height for pictures, in pixels * @see #setPreviewSize(int,int) diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index e33060bb9250a..9bf619900e19f 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -2130,6 +2130,12 @@ public final class CameraCharacteristics extends CameraMetadata *

Refer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} for additional * mandatory stream configurations on a per-capability basis.

+ *

Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for + * downscaling from larger resolution to smaller, and the QCIF resolution sometimes is not + * fully supported due to this limitation on devices with high-resolution image sensors. + * Therefore, trying to configure a QCIF resolution stream together with any other + * stream larger than 1920x1080 resolution (either width or height) might not be supported, + * and capture session creation will fail if it is not.

*

This key is available on all devices.

* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL @@ -2325,6 +2331,12 @@ public final class CameraCharacteristics extends CameraMetadata * + *

Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on + * downscaling from larger resolution to smaller ones, and the QCIF resolution can sometimes + * not be fully supported due to this limitation on devices with high-resolution image + * sensors. Therefore, trying to configure a QCIF resolution stream together with any other + * stream larger than 1920x1080 resolution (either width or height) might not be supported, + * and capture session creation will fail if it is not.

*

This key is available on all devices.

* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL @@ -3182,7 +3194,7 @@ public final class CameraCharacteristics extends CameraMetadataLEVEL_3 devices additionally support YUV reprocessing and RAW image capture, along * with additional output stream configurations. *
  • EXTERNAL devices are similar to LIMITED devices with exceptions like some sensor or - * lens information not reorted or less stable framerates.
  • + * lens information not reported or less stable framerates. * *

    See the individual level enums for full descriptions of the supported capabilities. The * {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} entry describes the device's capabilities at a diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index ce88697fa8db2..04e9246b994e0 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -433,6 +433,14 @@ public abstract class CameraDevice implements AutoCloseable { * target combinations with sizes outside of these guarantees, but this can only be tested for * by attempting to create a session with such targets.

    * + *

    Exception on 176x144 (QCIF) resolution: + * Camera devices usually have a fixed capability for downscaling from larger resolution to + * smaller, and the QCIF resolution sometimes is not fully supported due to this + * limitation on devices with high-resolution image sensors. Therefore, trying to configure a + * QCIF resolution stream together with any other stream larger than 1920x1080 resolution + * (either width or height) might not be supported, and capture session creation will fail if it + * is not.

    + * * @param outputs The new set of Surfaces that should be made available as * targets for captured image data. * @param callback The callback to notify about the status of the new capture session. diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index ce95b60dd2db6..83c862f753723 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -120,8 +120,6 @@ interface IConnectivityManager LegacyVpnInfo getLegacyVpnInfo(int userId); - VpnInfo[] getAllVpnInfo(); - boolean updateLockdownVpn(); boolean isAlwaysOnVpnPackageSupported(int userId, String packageName); boolean setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown); diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl index 8e6f272388461..148b25dfa86f0 100644 --- a/core/java/android/net/INetworkStatsService.aidl +++ b/core/java/android/net/INetworkStatsService.aidl @@ -19,11 +19,13 @@ package android.net; import android.net.DataUsageRequest; import android.net.INetworkStatsSession; import android.net.Network; +import android.net.NetworkState; import android.net.NetworkStats; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.os.IBinder; import android.os.Messenger; +import com.android.internal.net.VpnInfo; /** {@hide} */ interface INetworkStatsService { @@ -58,7 +60,11 @@ interface INetworkStatsService { void incrementOperationCount(int uid, int tag, int operationCount); /** Force update of ifaces. */ - void forceUpdateIfaces(in Network[] defaultNetworks); + void forceUpdateIfaces( + in Network[] defaultNetworks, + in VpnInfo[] vpnArray, + in NetworkState[] networkStates, + in String activeIface); /** Force update of statistics. */ void forceUpdate(); diff --git a/core/java/android/webkit/WebViewClient.java b/core/java/android/webkit/WebViewClient.java index a29d449665404..26c21753a23f9 100644 --- a/core/java/android/webkit/WebViewClient.java +++ b/core/java/android/webkit/WebViewClient.java @@ -102,9 +102,11 @@ public class WebViewClient { /** * Notify the host application that a page has finished loading. This method - * is called only for main frame. When onPageFinished() is called, the - * rendering picture may not be updated yet. To get the notification for the - * new Picture, use {@link WebView.PictureListener#onNewPicture}. + * is called only for main frame. Receiving an {@code onPageFinished()} callback does not + * guarantee that the next frame drawn by WebView will reflect the state of the DOM at this + * point. In order to be notified that the current DOM state is ready to be rendered, request a + * visual state callback with {@link WebView#postVisualStateCallback} and wait for the supplied + * callback to be triggered. * * @param view The WebView that is initiating the callback. * @param url The url of the page. diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index fd944c3ded07f..3fc2c3df83ef3 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -1775,7 +1775,7 @@ "%1$s/%2$s" "Suzi" "Ne ometaj" - "Prestanak rada" + "Neaktivnost" "Radni dan uvečer" "Vikend" "Događaj" diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 83fe23e8dee44..a84d9fda84194 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -258,7 +258,7 @@ "Estat de la VPN" "Administració del dispositiu" "Alertes" - "Demostració comercial" + "Demostració per a botigues" "Connexió USB" "S\'està executant una aplicació" "Aplicacions que consumeixen bateria" diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index e37339d310599..2026f0de4e4ba 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -383,13 +383,13 @@ "Umožňuje aplikaci odesílat trvalá vysílání, která přetrvávají i po skončení vysílání. Nadměrné používání může televizi zpomalit či způsobit její nestabilitu, protože bude používat příliš mnoho paměti." "Umožňuje aplikaci odesílat trvalá vysílání, která přetrvávají i po skončení vysílání. Nadměrné používání může telefon zpomalit či způsobit jeho nestabilitu, protože bude používat příliš mnoho paměti." "čtení kontaktů" - "Umožňuje aplikaci číst údaje o kontaktech uložených v tabletu, včetně toho, jak často voláte, posíláte e-maily nebo jinak komunikujete s konkrétními osobami. Toto oprávnění umožňuje aplikacím ukládat údaje o kontaktech. Škodlivé aplikace mohou tyto údaje bez vašeho vědomí sdílet." - "Umožňuje aplikaci číst údaje o kontaktech uložených v televizi včetně toho, jak často voláte, posíláte e-maily nebo jinými způsoby komunikujete s konkrétními kontakty. Toto oprávnění umožňuje aplikacím ukládat údaje o vašich kontaktech a škodlivé aplikace mohou sdílet údaje o kontaktech bez vašeho vědomí." - "Umožňuje aplikaci číst údaje o kontaktech uložených v telefonu, včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Toto oprávnění umožňuje aplikacím ukládat údaje o kontaktech. Škodlivé aplikace mohou tyto údaje bez vašeho vědomí sdílet." + "Umožňuje aplikaci číst údaje o kontaktech uložených v tabletu, včetně toho, jak často voláte, posíláte e‑maily nebo jinak komunikujete s konkrétními osobami. Toto oprávnění umožňuje aplikacím ukládat údaje o kontaktech. Škodlivé aplikace mohou tyto údaje bez vašeho vědomí sdílet." + "Umožňuje aplikaci číst údaje o kontaktech uložených v televizi včetně toho, jak často voláte, posíláte e‑maily nebo jinými způsoby komunikujete s konkrétními kontakty. Toto oprávnění umožňuje aplikacím ukládat údaje o vašich kontaktech a škodlivé aplikace mohou sdílet údaje o kontaktech bez vašeho vědomí." + "Umožňuje aplikaci číst údaje o kontaktech uložených v telefonu, včetně toho, jak často voláte, posíláte e‑maily nebo komunikujete jinými způsoby s konkrétními osobami. Toto oprávnění umožňuje aplikacím ukládat údaje o kontaktech. Škodlivé aplikace mohou tyto údaje bez vašeho vědomí sdílet." "úprava kontaktů" - "Umožňuje aplikaci upravit údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." - "Umožňuje aplikaci upravit údaje o kontaktech uložených v televizi včetně toho, jak často voláte, posíláte e-maily nebo jinými způsoby komunikujete s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." - "Umožňuje aplikaci upravit údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." + "Umožňuje aplikaci upravit údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e‑maily nebo komunikujete jinými způsoby s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." + "Umožňuje aplikaci upravit údaje o kontaktech uložených v televizi včetně toho, jak často voláte, posíláte e‑maily nebo jinými způsoby komunikujete s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." + "Umožňuje aplikaci upravit údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e‑maily nebo komunikujete jinými způsoby s konkrétními kontakty. Toto oprávnění aplikacím umožňuje mazat údaje o kontaktech." "čtení seznamu hovorů" "Tato aplikace může číst historii volání." "zápis do seznamu hovorů" diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index f75197d26b4ce..e7a641a699f59 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -63,7 +63,7 @@ "Rufweiterleitung" "Anklopfen" "Anrufsperre" - "Passwort-Änderung" + "Passwortänderung" "PIN-Änderung" "Rufnummer vorhanden" "Rufnummer begrenzt" diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index d8bf16daf1c2b..7e2572e213a94 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -135,7 +135,7 @@ "Desactivado" "Dar preferencia a Wi-Fi" "Preferir datos móviles" - "Solo conexión Wi-Fi" + "Solo Wi-Fi" "{0}: No desviada" "{0}: {1}" "{0}: {1} transcurridos {2} segundos" diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index e7406e64d7d83..c1396458cc08a 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -1223,7 +1223,7 @@ "Utzi" "Gogoratu aukera" "Hori geroago alda dezakezu Ezarpenak > Aplikazioak atalean" - "Onartu beti" + "Eman baimena beti" "Ez onartu inoiz" "SIM txartela kendu da" "Sare mugikorra ez da erabilgarri egongo baliozko SIM txartel bat sartuta berrabiarazten ez duzun arte." diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 8899d4633185c..83d16cbc2451f 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -269,7 +269,7 @@ "Mode sécurisé" "Système Android" "Passer au profil personnel" - "Passer au profil professionnel" + "Passer au profil pro" "Contacts" "accéder à vos contacts" "Permettre à <b>%1$s</b> d\'accéder à vos contacts ?" diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 99fe63d334ca4..2f6498ded6b8f 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -48,7 +48,7 @@ "Մուտքագրեք PIN, որը 4-ից 8 թիվ է:" "Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:" "Ձեր SIM քարտը PUK-ով կողպված է: Մուտքագրեք PUK կոդը այն ապակողպելու համար:" - "Մուտքագրեք PUK2-ը` SIM քարտն արգելաբացելու համար:" + "Մուտքագրեք PUK2-ը` SIM քարտն արգելահանելու համար:" "Ձախողվեց: Միացրեք SIM/RUIM կողպումը:" Մնաց %d փորձ, որից հետո SIM քարտն արգելափակվելու է: @@ -233,9 +233,9 @@ "Անձայն ռեժիմ" "Ձայնը անջատված է" "Ձայնը միացված է" - "Ինքնաթիռի ռեժիմ" - "Ինքնաթիռի ռեժիմը միացված է" - "Ինքնաթիռի ռեժիմը անջատված է" + "Ավիառեժիմ" + "Ավիառեժիմը միացված է" + "Ավիառեժիմը անջատված է" "Մարտկոցի տնտեսում" "Անջատել" "Միացնել" diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 2feb98545c60f..d87b9b767282d 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1257,7 +1257,7 @@ "ಸಂಪರ್ಕಗೊಂಡಿರುವ ಸಾಧನವನ್ನು ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ. ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ." "ಅನ್‌ಲಾಗ್ ಆಡಿಯೋ ಪರಿಕರ ಪತ್ತೆಯಾಗಿದೆ" "ಲಗತ್ತಿಸಲಾದ ಸಾಧನವು ಈ ಫೋನಿನೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ." - "USB ಡೀಬಗಿಂಗ್‌‌ ಸಂಪರ್ಕ" + "USB ಡೀಬಗಿಂಗ್‌‌ ಸಂಪರ್ಕಗೊಂಡಿದೆ" "USB ಡೀಬಗ್‌ ಮಾಡುವಿಕೆಯನ್ನು ಆಫ್‌ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ" "USB ಡೀಬಗ್‌ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ." "ದೋಷದ ವರದಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ…" diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 429190ca6cc29..1841d203547e9 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1075,7 +1075,7 @@ "%1$s थांबतो" "%1$s थांबते" "अ‍ॅप पुन्हा उघडा" - "अभिप्राय पाठवा" + "फीडबॅक पाठवा" "बंद करा" "डिव्हाइस रीस्टार्ट होईपर्यंत म्यूट करा" "प्रतीक्षा करा" diff --git a/packages/CtsShim/build/shim/AndroidManifest.xml b/packages/CtsShim/build/shim/AndroidManifest.xml index 9b813ace8b800..3e546f1e02dbe 100644 --- a/packages/CtsShim/build/shim/AndroidManifest.xml +++ b/packages/CtsShim/build/shim/AndroidManifest.xml @@ -20,7 +20,7 @@ package="com.android.cts.ctsshim" > + android:targetSdkVersion="28" /> diff --git a/packages/CtsShim/build/shim_priv/AndroidManifest.xml b/packages/CtsShim/build/shim_priv/AndroidManifest.xml index 9bf454c297680..9ab12c9743c0b 100644 --- a/packages/CtsShim/build/shim_priv/AndroidManifest.xml +++ b/packages/CtsShim/build/shim_priv/AndroidManifest.xml @@ -20,7 +20,7 @@ package="com.android.cts.priv.ctsshim" > + android:targetSdkVersion="28" /> diff --git a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml index 023e93e1449ee..2354061fe3512 100644 --- a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml +++ b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml @@ -20,7 +20,7 @@ package="com.android.cts.priv.ctsshim" > + android:targetSdkVersion="28" /> "Fejlretningstilstand, når USB er tilsluttet" "Tilbagekald tilladelser for USB-fejlfinding" "Genvej til fejlrapporting" - "Vis en knap til oprettelse af fejlrapporter i menu for slukknap" + "Vis en knap til oprettelse af fejlrapporter i afbrydermenuen" "Lås ikke" "Skærmen går ikke i dvale under opladning" "Aktivér Bluetooth HCI spionlog" diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index e4485de2177bf..20b0bb85bd022 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -201,7 +201,7 @@ "OEM-Entsperrung" "Bootloader-Entsperrung zulassen" "OEM-Entsperrung zulassen?" - "Achtung: Die Geräteschutzfunktionen funktionieren auf diesem Gerät nicht, solange diese Einstellung aktiviert ist." + "Achtung: Der Geräteschutz funktioniert auf diesem Gerät nicht, solange diese Einstellung aktiviert ist." "App für simulierte Standorte auswählen" "Keine App für simulierte Standorte eingerichtet" "App für simulierte Standorte: %1$s" diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index cfa32cad93b22..4dded9c1b607c 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -374,9 +374,9 @@ "Tiempo restante aproximado según tu uso: %1$s (%2$s)" "Tiempo restante: %1$s" "Debería durar aproximadamente hasta %1$s según el uso (%2$s)" - "Debería durar aproximadamente hasta %1$s según el uso" + "Duración aproximada hasta: %1$s (según el uso)" "Debería durar aproximadamente hasta %1$s (%2$s)" - "Debería durar aproximadamente hasta %1$s" + "Duración aproximada hasta: %1$s" "Tiempo restante: menos de %1$s" "Queda menos del %1$s (%2$s)" "Queda más del %1$s (%2$s)" diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index b289d0cb97cf2..bc2985591c4c8 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -33,7 +33,7 @@ "Egiaztatu pasahitza zuzena dela eta saiatu berriro" "Urrunegi" "Ez da konektatuko automatikoki" - "Ezin da atzitu Internet" + "Ezin da konektatu Internetera" "%1$s aplikazioak gorde du" "%1$s bidez automatikoki konektatuta" "Automatikoki konektatuta sareen balorazioen hornitzailearen bidez" @@ -72,7 +72,7 @@ "Telefono-deiak" "Fitxategi-transferentzia" "Sarrerako gailua" - "Interneterako sarbidea" + "Interneteko konexioa" "Kontaktuak partekatzea" "Erabili kontaktuak partekatzeko" "Interneteko konexioa partekatzea" @@ -89,9 +89,9 @@ "SAP sarbide-puntura konektatuta" "Fitxategi-transferentziako zerbitzarira konektatu gabe" "Sarrerako gailura konektatuta" - "Gailura konektatuta Interneteko sarbiderako" + "Gailura konektatuta Internet atzitzeko" "Tokiko Interneteko konexioa gailu batekin partekatzea" - "Erabili Internet atzitzeko" + "Erabili Internetera konektatzeko" "Erabili maparako" "Erabili SIM txartelerako sarbiderako" "Erabili euskarriaren audiorako" diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 1e3cc9c0d8cd2..5b0867566a64e 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -227,7 +227,7 @@ "Գործարկել Bluetooth աուդիո LDAC կոդեկը\nԸնտրություն՝ նվագարկման որակ" "Հեռարձակում՝ %1$s" "Մասնավոր DNS սերվեր" - "Ընտրեք անհատական DNS սերվերի ռեժիմը" + "Ընտրեք մասնավոր DNS-ի ռեժիմը" "Անջատված է" "Ավտոմատ" "Մասնավոր DNS ծառայության մատակարարի խնամորդի անունը" diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml index 41a3f108c0e91..6fa772c0fcb72 100644 --- a/packages/SystemUI/res-keyguard/values-af/strings.xml +++ b/packages/SystemUI/res-keyguard/values-af/strings.xml @@ -34,6 +34,7 @@ "Verkeerde PIN-kode." "Ongeldige kaart." "Gelaai" + "%s • Laai draadloos" "%s • Laai tans" "%s • Laai tans vinnig" "%s • Laai tans stadig" diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml index bf7f34cddfb37..b650a44292893 100644 --- a/packages/SystemUI/res-keyguard/values-am/strings.xml +++ b/packages/SystemUI/res-keyguard/values-am/strings.xml @@ -34,6 +34,7 @@ "ትክክል ያልሆነ ፒን ኮድ።" "ልክ ያልሆነ ካርድ።" "ባትሪ ሞልቷል" + "%s • በገመድ አልባ ኃይል በመሙላት ላይ" "%s • ኃይል በመሙላት ላይ" "%s • በፍጥነት ኃይልን በመሙላት ላይ" "%s • በዝግታ ኃይልን በመሙላት ላይ" diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml index 9980d64a7041b..745fbd5c67bf3 100644 --- a/packages/SystemUI/res-keyguard/values-ar/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml @@ -34,6 +34,7 @@ "رمز رقم التعريف الشخصي غير صحيح." "بطاقة غير صالحة." "تم الشحن" + "%s • جارٍ الشحن لاسلكيًا" "%s • جارٍ الشحن" "%s • جارٍ الشحن سريعًا" "%s • جارٍ الشحن ببطء" diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml index e3b6ddc4649b1..ee523496d64e8 100644 --- a/packages/SystemUI/res-keyguard/values-as/strings.xml +++ b/packages/SystemUI/res-keyguard/values-as/strings.xml @@ -34,6 +34,7 @@ "ভুল পিন ক\'ড।" "ব্যৱহাৰৰ অযোগ্য ছিম কাৰ্ড" "চ্চার্জ কৰা হ’ল" + "%s • বেঁতাৰৰ জৰিয়তে চ্চাৰ্জ কৰি থকা হৈছে" "%s • চ্চার্জ কৰি থকা হৈছে" "%s • দ্ৰুত গতিৰে চ্চাৰ্জ কৰি থকা হৈছে" "%s • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে" diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml index 09261940f9bd8..209eae99b58f6 100644 --- a/packages/SystemUI/res-keyguard/values-az/strings.xml +++ b/packages/SystemUI/res-keyguard/values-az/strings.xml @@ -34,6 +34,7 @@ "Yanlış PIN kod." "Yanlış Kart." "Enerji yığdı" + "%s • Simsiz Şəkildə Batareya Yığır" "%s • Enerji yığır" "%s • Sürətlə enerji yığır" "%s • Yavaş enerji yığır" diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml index 67da7b8e6e214..1683393d0f7ec 100644 --- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml @@ -34,6 +34,7 @@ "PIN kôd je netačan." "Nevažeća kartica." "Napunjena je" + "%s • Bežično punjenje" "%s • Puni se" "%s • Brzo se puni" "%s • Sporo se puni" diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml index 5b11a0973db71..983032e596556 100644 --- a/packages/SystemUI/res-keyguard/values-be/strings.xml +++ b/packages/SystemUI/res-keyguard/values-be/strings.xml @@ -34,6 +34,7 @@ "Няправільны PIN-код." "Несапраўдная картка." "Зараджаны" + "%s • Ідзе бесправадная зарадка" "%s • Ідзе зарадка" "%s • Ідзе хуткая зарадка" "%s • Ідзе павольная зарадка" diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml index 663d5f01da393..a27f47e96e527 100644 --- a/packages/SystemUI/res-keyguard/values-bg/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml @@ -34,6 +34,7 @@ "Неправилен ПИН код." "Картата е невалидна." "Заредена" + "%s • Зарежда се безжично" "%s • Зарежда се" "%s • Зарежда се бързо" "%s • Зарежда се бавно" diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml index 7a3b5757f258b..88e88f9b9ea7d 100644 --- a/packages/SystemUI/res-keyguard/values-bn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml @@ -34,6 +34,7 @@ "ভুল পিন কোড দেওয়া হয়েছে।" "ভুল কার্ড।" "চার্জ হয়েছে" + "%s • ওয়্যারলেস পদ্ধতিতে চার্জ করা হচ্ছে" "%s • চার্জ হচ্ছে" "%s • দ্রুত চার্জ হচ্ছে" "%s • ধীরে চার্জ হচ্ছে" diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml index e523ad4d48ae2..012b29ac58046 100644 --- a/packages/SystemUI/res-keyguard/values-bs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml @@ -34,6 +34,7 @@ "Pogrešan PIN." "Nevažeća kartica." "Napunjeno" + "%s • Bežično punjenje" "%s • Punjenje" "%s • Brzo punjenje" "%s • Sporo punjenje" diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml index 7b53abe5240eb..e9ecddc5b00df 100644 --- a/packages/SystemUI/res-keyguard/values-ca/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml @@ -34,6 +34,7 @@ "El codi PIN no és correcte." "La targeta no és vàlida." "Bateria carregada" + "%s • S\'està carregant sense fils" "%s • S\'està carregant" "%s • S\'està carregant ràpidament" "%s • S\'està carregant lentament" diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml index d827b258e1dc3..74e345b19b042 100644 --- a/packages/SystemUI/res-keyguard/values-cs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml @@ -34,6 +34,7 @@ "Nesprávný kód PIN." "Neplatná karta." "Nabito" + "%s • Bezdrátové nabíjení" "%s • Nabíjení" "%s • Rychlé nabíjení" "%s • Pomalé nabíjení" diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml index 8f9b962f6a551..d471a2fe83c74 100644 --- a/packages/SystemUI/res-keyguard/values-da/strings.xml +++ b/packages/SystemUI/res-keyguard/values-da/strings.xml @@ -34,6 +34,7 @@ "Forkert pinkode." "Ugyldigt kort." "Opladet" + "%s • Trådløs opladning" "%s • Oplader" "%s • Oplader hurtigt" "%s • Oplader langsomt" diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml index 8a1de2cbaeffc..d653e42c50d75 100644 --- a/packages/SystemUI/res-keyguard/values-de/strings.xml +++ b/packages/SystemUI/res-keyguard/values-de/strings.xml @@ -34,6 +34,7 @@ "Falscher PIN-Code." "Ungültige Karte." "Aufgeladen" + "%s • Kabelloses Laden" "%s • Wird geladen" "%s • Wird schnell geladen" "%s • Wird langsam geladen" diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml index bfab0d672711a..a268c597c00e0 100644 --- a/packages/SystemUI/res-keyguard/values-el/strings.xml +++ b/packages/SystemUI/res-keyguard/values-el/strings.xml @@ -34,6 +34,7 @@ "Λανθασμένος κωδικός PIN." "Μη έγκυρη κάρτα." "Φορτίστηκε" + "%s • Ασύρματη φόρτιση" "%s • Φόρτιση" "%s • Γρήγορη φόρτιση" "%s • Αργή φόρτιση" diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml index 44ef5524c44fb..d69790dbaa2a6 100644 --- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml @@ -34,6 +34,7 @@ "Incorrect PIN code." "Invalid card." "Charged" + "%s • Wirelessly Charging" "%s • Charging" "%s • Charging rapidly" "%s • Charging slowly" diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml index 1bddc86b2197d..c4a29b75ee7ab 100644 --- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml @@ -34,6 +34,7 @@ "Incorrect PIN code." "Invalid card." "Charged" + "%s • Wirelessly Charging" "%s • Charging" "%s • Charging rapidly" "%s • Charging slowly" diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml index 44ef5524c44fb..d69790dbaa2a6 100644 --- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml @@ -34,6 +34,7 @@ "Incorrect PIN code." "Invalid card." "Charged" + "%s • Wirelessly Charging" "%s • Charging" "%s • Charging rapidly" "%s • Charging slowly" diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml index 44ef5524c44fb..d69790dbaa2a6 100644 --- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml @@ -34,6 +34,7 @@ "Incorrect PIN code." "Invalid card." "Charged" + "%s • Wirelessly Charging" "%s • Charging" "%s • Charging rapidly" "%s • Charging slowly" diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml index ce8f169fdcb3c..bf3e4cde7b1f1 100644 --- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml @@ -34,6 +34,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎Incorrect PIN code.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎Invalid Card.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎Charged‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ • Wirelessly Charging‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ • Charging‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ • Charging rapidly‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ • Charging slowly‎‏‎‎‏‎" diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml index 0583d4b45a0d0..2923bc7a0d0f2 100644 --- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml @@ -34,6 +34,7 @@ "Código PIN incorrecto" "Tarjeta no válida" "Cargada" + "%s • Carga inalámbrica" "%s • Cargando" "%s • Cargando rápidamente" "%s • Cargando lentamente" diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml index 2d6721d9db3fc..53672b27b093b 100644 --- a/packages/SystemUI/res-keyguard/values-es/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es/strings.xml @@ -34,6 +34,7 @@ "El código PIN es incorrecto." "Tarjeta no válida." "Cargada" + "%s • Cargando sin cables" "%s • Cargando" "%s • Cargando rápidamente" "%s • Cargando lentamente" diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml index ac37c5ce6dc3f..38624090d2517 100644 --- a/packages/SystemUI/res-keyguard/values-et/strings.xml +++ b/packages/SystemUI/res-keyguard/values-et/strings.xml @@ -34,6 +34,7 @@ "Vale PIN-kood." "Kehtetu kaart." "Laetud" + "%s • Juhtmeta laadimine" "%s • Laadimine" "%s • Kiirlaadimine" "%s • Aeglane laadimine" diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml index 06bb32b3a5c90..ea336e69dbedf 100644 --- a/packages/SystemUI/res-keyguard/values-eu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml @@ -34,6 +34,7 @@ "PIN kode hori ez da zuzena." "Txartelak ez du balio." "Kargatuta" + "%s • Hari gabe kargatzen" "%s • Kargatzen" "%s • Bizkor kargatzen" "%s • Mantso kargatzen" diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml index 4d36918465412..30201527b864a 100644 --- a/packages/SystemUI/res-keyguard/values-fa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml @@ -34,6 +34,7 @@ "کد پین اشتباه است." "کارت نامعتبر" "شارژ کامل شد" + "%s • درحال شارژ شدن به‌صورت بی‌سیم" "%s • درحال شارژ شدن" "%s • درحال شارژ سریع" "%s • درحال شارژ آهسته" diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml index 52671516fdb1e..6d71fa0dd1dbd 100644 --- a/packages/SystemUI/res-keyguard/values-fi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml @@ -34,6 +34,7 @@ "Väärä PIN-koodi" "Virheellinen kortti" "Ladattu" + "%s • Ladataan langattomasti" "%s • Ladataan" "%s • Ladataan nopeasti" "%s • Ladataan hitaasti" diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml index 742e1eb422723..5ed6d6c7690fb 100644 --- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml @@ -34,6 +34,7 @@ "NIP erroné." "Cette carte n\'est pas valide." "Chargé" + "%s • En recharge sans fil" "En recharge : %s" "En recharge rapide : %s" "En recharge lente : %s" diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml index 3a552ea63043b..c1d504384f38c 100644 --- a/packages/SystemUI/res-keyguard/values-fr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml @@ -34,6 +34,7 @@ "Le code est incorrect." "Carte non valide." "Chargé" + "%s • Recharge sans fil" "%s • Recharge…" "%s • Recharge rapide…" "%s • Recharge lente…" diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml index 4a8fe8a3a0129..28610ce17bcf2 100644 --- a/packages/SystemUI/res-keyguard/values-gl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml @@ -34,6 +34,7 @@ "Código PIN incorrecto" "A tarxeta non é válida." "Cargada" + "%s • Cargando sen fíos" "%s • Cargando" "%s • Cargando rapidamente" "%s • Cargando lentamente" diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml index 6a10af5788388..ac0d8b82a8a9f 100644 --- a/packages/SystemUI/res-keyguard/values-gu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml @@ -34,6 +34,7 @@ "ખોટો પિન કોડ." "અમાન્ય કાર્ડ." "ચાર્જ થઈ ગયું" + "%s • વાયરલેસથી ચાર્જ થઈ રહ્યું છે" "%s • ચાર્જિંગ" "%s • ઝડપથી ચાર્જિંગ" "%s • ધીમેથી ચાર્જિંગ" diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml index 4297879524c84..58a8850c49e50 100644 --- a/packages/SystemUI/res-keyguard/values-hi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml @@ -34,6 +34,7 @@ "गलत पिन कोड." "गलत कार्ड." "चार्ज हो गई है" + "%s • वायरलेस तरीके से चार्ज हो रहा है" "%s • चार्ज हो रहा है" "%s • तेज़ चार्ज हो रहा है" "%s • धीरे चार्ज हो रहा है" diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml index 7485cef615c65..9667729e98ed5 100644 --- a/packages/SystemUI/res-keyguard/values-hr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml @@ -34,6 +34,7 @@ "PIN kôd nije točan." "Nevažeća kartica." "Napunjeno" + "%s • bežično punjenje" "%s • punjenje" "%s • brzo punjenje" "%s • sporo punjenje" diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml index 371bc645df3c6..0e9056e13d219 100644 --- a/packages/SystemUI/res-keyguard/values-hu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml @@ -34,6 +34,7 @@ "Helytelen PIN-kód." "Érvénytelen kártya." "Feltöltve" + "%s • Vezeték nélküli töltés folyamatban" "%s • Töltés" "%s • Gyors töltés" "%s • Lassú töltés" diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml index 92cb87aa21348..7ff03acd71f90 100644 --- a/packages/SystemUI/res-keyguard/values-hy/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml @@ -34,6 +34,7 @@ "PIN կոդը սխալ է։" "Սխալ քարտ" "Լիցքավորված է" + "%s • Անլար լիցքավորում" "%s • Լիցքավորում" "%s • Արագ լիցքավորում" "%s • Դանդաղ լիցքավորում" diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml index c0c828bc47ce8..12ddb35c12525 100644 --- a/packages/SystemUI/res-keyguard/values-in/strings.xml +++ b/packages/SystemUI/res-keyguard/values-in/strings.xml @@ -34,6 +34,7 @@ "Kode PIN salah." "Kartu Tidak Valid" "Terisi" + "%s • Mengisi Daya Secara Nirkabel" "%s • Mengisi daya" "%s • Mengisi daya dengan cepat" "%s • Mengisi daya dengan lambat" diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml index dad5e698b9103..05605f459f78f 100644 --- a/packages/SystemUI/res-keyguard/values-is/strings.xml +++ b/packages/SystemUI/res-keyguard/values-is/strings.xml @@ -34,6 +34,7 @@ "Rangt PIN-númer." "Ógilt kort." "Fullhlaðin" + "%s • Þráðlaus hleðsla" "%s • Í hleðslu" "%s • Hröð hleðsla" "%s • Hæg hleðsla" diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml index 2f322e857fa2c..353bbf4b9c331 100644 --- a/packages/SystemUI/res-keyguard/values-it/strings.xml +++ b/packages/SystemUI/res-keyguard/values-it/strings.xml @@ -34,6 +34,7 @@ "Codice PIN errato." "Scheda non valida." "Carico" + "%s • In ricarica wireless" "%s • In carica" "%s • Ricarica veloce" "%s • Ricarica lenta" diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml index cfffcd2f06fc5..0a0350e82d557 100644 --- a/packages/SystemUI/res-keyguard/values-iw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml @@ -34,6 +34,7 @@ "קוד הגישה שגוי" "כרטיס לא חוקי." "הסוללה טעונה" + "%s • בטעינה אלחוטית" "%s • בטעינה" "%s • בטעינה מהירה" "%s • בטעינה איטית" diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml index 98e8ce08a2b68..51c1f40a28b18 100644 --- a/packages/SystemUI/res-keyguard/values-ja/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml @@ -34,6 +34,7 @@ "PIN コードが無効です。" "無効なカードです。" "充電が完了しました" + "%s • ワイヤレス充電中" "%s • 充電中" "%s • 急速充電中" "%s • 低速充電中" diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml index df96979589659..f782779e0f1d0 100644 --- a/packages/SystemUI/res-keyguard/values-ka/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml @@ -34,6 +34,7 @@ "PIN-კოდი არასწორია." "ბარათი არასწორია." "დატენილია" + "%s • იტენება უსადენოდ" "%s • იტენება" "%s • სწრაფად იტენება" "%s • ნელა იტენება" diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml index 6ed9f44391a05..a58b163fd5fc9 100644 --- a/packages/SystemUI/res-keyguard/values-kk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml @@ -34,6 +34,7 @@ "PIN коды қате" "Жарамсыз карта." "Зарядталды" + "%s • Сымсыз зарядтау" "%s • Зарядталуда" "%s • Жылдам зарядталуда" "%s • Баяу зарядталуда" diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index f7960e5a8c603..66f0fea47173d 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -34,6 +34,7 @@ "កូដ PIN មិន​ត្រឹមត្រូវ​ទេ។" "បណ្ណមិនត្រឹមត្រូវទេ។" "បាន​សាក​ថ្ម" + "%s • កំពុង​សាកថ្ម​ឥតខ្សែ" "%s • កំពុង​សាកថ្ម" "%s • កំពុង​សាកថ្មយ៉ាង​ឆាប់រហ័ស" "%s • កំពុង​សាកថ្មយឺត" diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml index e6b03f92112b4..9b79d4953ae38 100644 --- a/packages/SystemUI/res-keyguard/values-kn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml @@ -34,6 +34,7 @@ "ತಪ್ಪಾದ ಪಿನ್‌ ಕೋಡ್." "ಅಮಾನ್ಯ ಕಾರ್ಡ್." "ಚಾರ್ಜ್ ಆಗಿದೆ" + "%s • ವೈರ್‌ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ" "%s • ಚಾರ್ಜ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ" "%s • ವೇಗವಾಗಿ ಚಾರ್ಜ್‌ಮಾಡಲಾಗುತ್ತಿದೆ" "%s • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ" diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml index ffdb1e5c0b008..647aa34639147 100644 --- a/packages/SystemUI/res-keyguard/values-ko/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml @@ -34,6 +34,7 @@ "잘못된 PIN 코드입니다." "유효하지 않은 카드" "충전됨" + "%s • 무선 충전 중" "%s • 충전 중" "%s • 고속 충전 중" "%s • 저속 충전 중" diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml index 80ae05031e3af..14645a6e83f75 100644 --- a/packages/SystemUI/res-keyguard/values-ky/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml @@ -34,6 +34,7 @@ "PIN-код туура эмес." "SIM-карта жараксыз." "Кубатталды" + "%s • Зымсыз кубатталууда" "%s • Кубатталууда" "%s • Тез кубатталууда" "%s • Жай кубатталууда" diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml index b05915acfdb2a..24b0327dc4e48 100644 --- a/packages/SystemUI/res-keyguard/values-lo/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml @@ -34,6 +34,7 @@ "ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ." "ບັດບໍ່ຖືກຕ້ອງ." "ສາກເຕັມແລ້ວ." + "%s • ກຳລັງສາກແບບໄຮ້ສາຍ" "%s • ກຳລັງສາກ" "%s • ກຳລັງສາກແບບດ່ວນ" "%s • ກຳລັງສາກແບບຊ້າ" diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml index 5cd696f7adeb4..d46065efe029a 100644 --- a/packages/SystemUI/res-keyguard/values-lt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml @@ -34,6 +34,7 @@ "Netinkamas PIN kodas." "Netinkama kortelė." "Įkrauta" + "%s • Įkraunama be laidų" "%s • Įkraunama" "%s • Greitai įkraunama" "%s • Lėtai įkraunama" diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml index d4f60208b6526..5b60b61ae2e2e 100644 --- a/packages/SystemUI/res-keyguard/values-lv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml @@ -34,6 +34,7 @@ "PIN kods nav pareizs." "Nederīga karte." "Akumulators uzlādēts" + "%s • Notiek bezvadu uzlāde" "%s • Notiek uzlāde" "%s • Notiek ātrā uzlāde" "%s • Notiek lēnā uzlāde" diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml index aff4803711ef8..630ccb1c88759 100644 --- a/packages/SystemUI/res-keyguard/values-mk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml @@ -34,6 +34,7 @@ "Погрешен PIN-код." "Неважечка картичка." "Полна" + "%s • Безжично полнење" "%s • Се полни" "%s • Брзо полнење" "%s • Бавно полнење" diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml index d3283e122c322..8ecf09297e0d0 100644 --- a/packages/SystemUI/res-keyguard/values-ml/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml @@ -34,6 +34,7 @@ "പിൻ കോഡ് തെറ്റാണ്." "അസാധുവായ കാർഡ്." "ചാർജായി" + "%s • വയർലെസ്സ് ആയി ചാർജ്ജ് ചെയ്യുന്നു" "%s • ചാർജ് ചെയ്യുന്നു" "%s • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു" "%s • പതുക്കെ ചാർജ് ചെയ്യുന്നു" diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml index 99c7339c6beea..3b4fd3dcf5a1f 100644 --- a/packages/SystemUI/res-keyguard/values-mn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml @@ -34,6 +34,7 @@ "ПИН код буруу байна." "Карт хүчингүй байна." "Цэнэглэсэн" + "%s • Утасгүй цэнэглэж байна" "%s • Цэнэглэж байна" "%s • Хурдан цэнэглэж байна" "%s • Удаан цэнэглэж байна" diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml index d30ac62e302ae..fda6b731843f4 100644 --- a/packages/SystemUI/res-keyguard/values-mr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml @@ -34,6 +34,7 @@ "चुकीचा पिन कोड." "अवैध कार्ड." "चार्ज झाली" + "%s • वायरलेस पद्धतीने चार्ज करत आहे" "%s • चार्ज होत आहे" "%s • वेगाने चार्ज होत आहे" "%s • सावकाश चार्ज होत आहे" diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml index 19e53d564a874..0c47e60969d6c 100644 --- a/packages/SystemUI/res-keyguard/values-ms/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml @@ -34,6 +34,7 @@ "Kod PIN salah." "Kad Tidak Sah." "Sudah dicas" + "%s • Mengecas Secara Wayarles" "%s • Mengecas" "%s • Mengecas dengan cepat" "%s • Mengecas dengan perlahan" diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml index c9a2e1cb496d9..97ca97c7c4ee3 100644 --- a/packages/SystemUI/res-keyguard/values-my/strings.xml +++ b/packages/SystemUI/res-keyguard/values-my/strings.xml @@ -34,6 +34,7 @@ "ပင်နံပါတ် မှားနေသည်။" "ကတ် မမှန်ကန်ပါ။" "အားသွင်းပြီးပါပြီ" + "%s • ကြိုးမဲ့ အားသွင်းနေသည်" "%s • အားသွင်းနေသည်" "%s • အမြန်အားသွင်းနေသည်" "%s • နှေးကွေးစွာ အားသွင်းနေသည်" diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml index 457359685ec20..d9dcae19d00a1 100644 --- a/packages/SystemUI/res-keyguard/values-nb/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml @@ -34,6 +34,7 @@ "Feil PIN-kode." "Ugyldig kort." "Oppladet" + "%s • Lader trådløst" "%s • Lader" "%s • Lader raskt" "%s • Lader sakte" diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml index 34ee777cba96c..f2ac9d38c9f68 100644 --- a/packages/SystemUI/res-keyguard/values-ne/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml @@ -34,6 +34,7 @@ "PIN कोड गलत छ।" "अमान्य कार्ड।" "चार्ज भयो" + "%s • ताररहित तरिकाले चार्ज गर्दै" "%s • चार्ज गरिँदै" "%s • द्रुत गतिमा चार्ज गरिँदै" "%s • मन्द गतिमा चार्ज गरिँदै" diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml index e2f5806f261c6..327d3aa17b047 100644 --- a/packages/SystemUI/res-keyguard/values-nl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml @@ -34,6 +34,7 @@ "Onjuiste pincode." "Ongeldige kaart." "Opgeladen" + "%s • Draadloos opladen" "%s • Opladen" "%s • Snel opladen" "%s • Langzaam opladen" diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml index 1ffce78f593a5..af56aba96c326 100644 --- a/packages/SystemUI/res-keyguard/values-or/strings.xml +++ b/packages/SystemUI/res-keyguard/values-or/strings.xml @@ -34,6 +34,7 @@ "ଭୁଲ PIN କୋଡ୍।" "ଅମାନ୍ୟ କାର୍ଡ।" "ଚାର୍ଜ ହୋଇଗଲା" + "%s • ୱାୟାର୍‍‍ଲେସ୍‍‍ଭାବରେ ଚାର୍ଜ ହେଉଛି" "%s • ଚାର୍ଜ ହେଉଛି" "%s • ଦ୍ରୁତ ଭାବେ ଚାର୍ଜ ହେଉଛି" "%s • ଧୀରେ ଚାର୍ଜ ହେଉଛି" diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml index e1379f6f16f96..aed937504e3ff 100644 --- a/packages/SystemUI/res-keyguard/values-pa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml @@ -34,6 +34,7 @@ "ਗਲਤ ਪਿੰਨ ਕੋਡ।" "ਅਵੈਧ ਕਾਰਡ।" "ਚਾਰਜ ਹੋ ਗਿਆ" + "%s • ਵਾਇਰਲੈੱਸ ਤੌਰ \'ਤੇ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" "%s • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" "%s • ਤੇਜ਼ੀ ਨਾਲ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" "%s • ਹੌਲੀ-ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml index 8376a365eb37d..e72e34b302474 100644 --- a/packages/SystemUI/res-keyguard/values-pl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml @@ -34,6 +34,7 @@ "Nieprawidłowy kod PIN." "Nieprawidłowa karta." "Naładowana" + "%s • Ładowanie bezprzewodowe" "%s • Ładowanie" "%s • Szybkie ładowanie" "%s • Wolne ładowanie" diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml index b3e0bbb5c36ab..59e733a546b4c 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml @@ -34,6 +34,7 @@ "Código PIN incorreto." "Cartão inválido." "Carregada" + "%s • Carregando sem fio" "%s • Carregando" "%s • Carregando rapidamente" "%s • Carregando lentamente" diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml index a2f8aea2ca525..21263d8a49d86 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml @@ -34,6 +34,7 @@ "Código PIN incorreto." "Cartão inválido." "Carregada" + "%s • Carregamento sem fios" "%s • A carregar…" "%s • A carregar rapidamente…" "%s • A carregar lentamente…" diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml index b3e0bbb5c36ab..59e733a546b4c 100644 --- a/packages/SystemUI/res-keyguard/values-pt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml @@ -34,6 +34,7 @@ "Código PIN incorreto." "Cartão inválido." "Carregada" + "%s • Carregando sem fio" "%s • Carregando" "%s • Carregando rapidamente" "%s • Carregando lentamente" diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml index 148772b66f029..7b42a025334d0 100644 --- a/packages/SystemUI/res-keyguard/values-ro/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml @@ -34,6 +34,7 @@ "Cod PIN incorect." "Card nevalid" "Încărcată" + "%s • Încărcare Wireless" "%s • Se încarcă" "%s • Se încarcă rapid" "%s • Se încarcă lent" diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml index c6d06aad0c4ca..8039bb3fe043e 100644 --- a/packages/SystemUI/res-keyguard/values-ru/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml @@ -34,6 +34,7 @@ "Неверный PIN-код." "Ошибка SIM-карты." "Батарея заряжена" + "%s • Беспроводная зарядка" "Идет зарядка (%s)" "Идет быстрая зарядка (%s)" "Идет медленная зарядка (%s)" diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml index 7e3b6356b885e..f08dce28c0555 100644 --- a/packages/SystemUI/res-keyguard/values-si/strings.xml +++ b/packages/SystemUI/res-keyguard/values-si/strings.xml @@ -34,6 +34,7 @@ "වැරදි PIN කේතයකි." "වලංගු නොවන කාඩ්පත." "අරෝපිතයි" + "%s • නොරැහැන්ව ආරෝපණය වේ" "%s • ආරෝපණය වෙමින්" "%s • වේගයෙන් ආරෝපණය වෙමින්" "%s • සෙමින් ආරෝපණය වෙමින්" diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml index a0cd7a52bb311..014d473657146 100644 --- a/packages/SystemUI/res-keyguard/values-sk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml @@ -34,6 +34,7 @@ "Nesprávny kód PIN." "Neplatná karta." "Nabité" + "%s • Prebieha bezdrôtové nabíjanie" "%s • Nabíja sa" "%s • Nabíja sa rýchlo" "%s • Nabíja sa pomaly" diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml index 6bcae3e5b6d21..f20de90b3112b 100644 --- a/packages/SystemUI/res-keyguard/values-sl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml @@ -34,6 +34,7 @@ "Napačna koda PIN." "Neveljavna kartica" "Akumulator napolnjen" + "%s • brezžično polnjenje" "%s • polnjenje" "%s • hitro polnjenje" "%s • počasno polnjenje" diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml index dca238857603d..0b2a534414aaf 100644 --- a/packages/SystemUI/res-keyguard/values-sq/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml @@ -34,6 +34,7 @@ "Kodi PIN është i pasaktë." "Karta e pavlefshme." "I ngarkuar" + "%s • Po ngarkohet me valë" "%s • Po ngarkohet" "%s • Po ngarkohet me shpejtësi" "%s • Po ngarkohet ngadalë" diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml index 6882333f470e9..8f8df8a58a350 100644 --- a/packages/SystemUI/res-keyguard/values-sr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml @@ -34,6 +34,7 @@ "PIN кôд је нетачан." "Неважећа картица." "Напуњена је" + "%s • Бежично пуњење" "%s • Пуни се" "%s • Брзо се пуни" "%s • Споро се пуни" diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml index e8fd26eeafbf8..5b82cb613ee8c 100644 --- a/packages/SystemUI/res-keyguard/values-sv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml @@ -34,6 +34,7 @@ "Fel pinkod." "Ogiltigt kort." "Laddat" + "%s • Laddas trådlöst" "%s • Laddas" "%s • Laddas snabbt" "%s • Laddas långsamt" diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml index 3dc496a6158f0..075b989bb1cbd 100644 --- a/packages/SystemUI/res-keyguard/values-sw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml @@ -34,6 +34,7 @@ "Nambari ya PIN si sahihi." "Kadi si Sahihi." "Betri imejaa" + "%s • Inachaji bila Kutumia Waya" "%s • Inachaji" "%s • Inachaji kwa kasi" "%s • Inachaji pole pole" diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml index 35b62f57aa728..5b620f70f6fce 100644 --- a/packages/SystemUI/res-keyguard/values-ta/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml @@ -34,6 +34,7 @@ "தவறான பின் குறியீடு." "செல்லாத சிம் கார்டு." "சார்ஜ் செய்யப்பட்டது" + "%s • வயர்லெஸ் முறையில் சார்ஜாகிறது" "%s • சார்ஜாகிறது" "%s • வேகமாகச் சார்ஜாகிறது" "%s • மெதுவாகச் சார்ஜாகிறது" diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml index 2f0377f870401..faa38fa585e9b 100644 --- a/packages/SystemUI/res-keyguard/values-te/strings.xml +++ b/packages/SystemUI/res-keyguard/values-te/strings.xml @@ -34,6 +34,7 @@ "పిన్ కోడ్ తప్పు." "చెల్లని కార్డ్." "ఛార్జ్ చేయబడింది" + "%s • వైర్‌లెస్‌గా ఛార్జ్ అవుతోంది" "%s • ఛార్జ్ అవుతోంది" "%s • వేగంగా ఛార్జ్ అవుతోంది" "%s • నెమ్మదిగా ఛార్జ్ అవుతోంది" diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml index 92a5a08e419ea..c276237ce1227 100644 --- a/packages/SystemUI/res-keyguard/values-th/strings.xml +++ b/packages/SystemUI/res-keyguard/values-th/strings.xml @@ -34,6 +34,7 @@ "รหัส PIN ไม่ถูกต้อง" "การ์ดไม่ถูกต้อง" "ชาร์จแล้ว" + "%s • กำลังชาร์จแบบไร้สาย" "%s • กำลังชาร์จ" "%s • กำลังชาร์จอย่างเร็ว" "%s • กำลังชาร์จอย่างช้าๆ" diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml index b993167bf58c1..5520757f3fe4e 100644 --- a/packages/SystemUI/res-keyguard/values-tl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml @@ -34,6 +34,7 @@ "Mali ang PIN code." "Di-wasto ang Card." "Tapos nang mag-charge" + "%s • Wireless na Nagcha-charge" "%s • Nagcha-charge" "%s • Mabilis na nagcha-charge" "%s • Mabagal na nagcha-charge" diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml index 2dfd7b3b57c46..bc291eb476a2c 100644 --- a/packages/SystemUI/res-keyguard/values-tr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml @@ -34,6 +34,7 @@ "Yanlış PIN kodu." "Geçersiz Kart." "Şarj oldu" + "%s • Kablosuz Olarak Şarj Oluyor" "%s • Şarj oluyor" "%s • Hızlı şarj oluyor" "%s • Yavaş şarj oluyor" diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml index 821257e05f1af..70e2fd9e716ef 100644 --- a/packages/SystemUI/res-keyguard/values-uk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml @@ -34,6 +34,7 @@ "Неправильний PIN-код." "Недійсна картка." "Заряджено" + "%s • Бездротове заряджання" "%s • Заряджання" "%s • Швидке заряджання" "%s • Повільне заряджання" diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml index bfbc70f8039f0..5bf7c7dfa7253 100644 --- a/packages/SystemUI/res-keyguard/values-ur/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml @@ -34,6 +34,7 @@ "‏غلط PIN کوڈ۔" "غلط کارڈ۔" "چارج ہوگئی" + "%s • وائرلیس چارجنگ" "%s • چارج ہو رہا ہے" "%s • تیزی سے چارج ہو رہا ہے" "%s • آہستہ چارج ہو رہا ہے" diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml index ad7a0dcc52351..5e9d5a24b5527 100644 --- a/packages/SystemUI/res-keyguard/values-uz/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml @@ -34,6 +34,7 @@ "PIN kodi xato." "SIM karta yaroqsiz." "Batareya quvvati to‘ldi" + "%s • Simsiz quvvat olmoqda" "%s • Quvvat olmoqda" "%s • Tezkor quvvat olmoqda" "%s • Sekin quvvat olmoqda" diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml index 1a2d6b41185f2..8f4b5051ad739 100644 --- a/packages/SystemUI/res-keyguard/values-vi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml @@ -34,6 +34,7 @@ "Mã PIN không chính xác." "Thẻ không hợp lệ." "Đã sạc đầy" + "%s • Đang sạc không dây" "%s • Đang sạc" "%s • Đang sạc nhanh" "%s • Đang sạc chậm" diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml index f6576b37fd6a2..7e195dc65b2c2 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml @@ -34,6 +34,7 @@ "PIN 码有误。" "SIM 卡无效。" "已充满电" + "%s • 正在无线充电" "%s • 正在充电" "%s • 正在快速充电" "%s • 正在慢速充电" diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml index af238dd3c2dee..65b12c5657f55 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml @@ -34,6 +34,7 @@ "PIN 碼不正確。" "SIM 卡無效。" "已完成充電" + "%s • 無線充電中" "%s • 正在充電" "%s • 正在快速充電" "%s •正在慢速充電" diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml index b8cdfc3cdd2e1..e3e3a61a68a30 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml @@ -34,6 +34,7 @@ "PIN 碼不正確。" "卡片無效。" "充電完成" + "%s • 無線充電" "%s • 充電中" "%s • 快速充電中" "%s • 慢速充電中" diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml index 54096387a5cd1..02a9c70e91685 100644 --- a/packages/SystemUI/res-keyguard/values-zu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml @@ -34,6 +34,7 @@ "Ikhodi ye-PIN engalungile!" "Ikhadi elingavumelekile." "Kushajiwe" + "%s • Ukushaja okungenantambo" "%s • Iyashaja" "%s • Ishaja kaningi" "%s • Ishaja kancane" diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 71e610cc5eebd..4f5537a9f5872 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -399,6 +399,7 @@ "Volkome\nstilte" "Net\nprioriteit" "Net\nwekkers" + "%2$s • Laai draadloos (%1$s tot vol)" "%2$s • Laai tans (%s tot vol)" "%2$s • Laai tans vinnig (%s tot vol)" "%2$s • Laai tans stadig (%s tot vol)" diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 1dc7a9559cabd..cf10383b8cebf 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -399,6 +399,7 @@ "ሙሉ ለሙሉ\nጸጥታ" "ቅድሚያ ተሰጪ\nብቻ" "ማንቂያዎች\nብቻ" + "%2$s • በገመድ አልባ ኃይል በመሙላት ላይ (%1$s እስከሚሞላ ድረስ)" "%2$s • ኃይል በመሙላት ላይ (እስኪሞላ ድረስ %s)" "%2$s • በፍጥነት ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ %s)" "%2$s • በዝግታ ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ %s)" diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index c084eb7a98474..9a4e9329e5035 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -411,6 +411,7 @@ "كتم الصوت\nتمامًا" "الأولوية \nفقط" "التنبيهات\nفقط" + "%2$s • جارٍ الشحن لاسلكيًا (يتبقى %1$s على اكتمال الشحن)" "%2$s • جارٍ الشحن (يتبقى %s حتى الامتلاء)" "%2$s • جارٍ الشحن سريعًا (يتبقى %s حتى الامتلاء)" "%2$s • جارٍ الشحن ببطء (يتبقى %s حتى الامتلاء)" diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 4f07c62e49425..623427bd1f843 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -399,6 +399,7 @@ "সম্পূর্ণ \n নিৰৱতা" "কেৱল\nগুৰুত্বপূৰ্ণ" "কেৱল\nএলাৰ্মসমূহ" + "%2$s • বেঁতাৰৰ জৰিয়তে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ’বলৈ %1$s বাকী)" "%2$s • চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ %s বাকী)" "%2$s • দ্ৰুতগতিৰে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ %s বাকী)" "%2$s • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ %s বাকী)" diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 3d2e1b042a3a2..ccd5b61b70dc9 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -399,6 +399,7 @@ "Tam\nsakitlik" "Yalnız\nprioritet" "Yalnız\nalarmlar" + "%2$s • Simsiz Şəkildə Batareya Yığır (tam dolmasına %1$s qalıb)" "%2$s • Enerji yığır (%s dolana qədər)" "%2$s • Sürətlə enerji yığır (%s dolana qədər)" "%2$s • Yavaş enerji yığır (%s dolana qədər)" diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 4a08769dc4549..173bb110bdcca 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -402,6 +402,7 @@ "Potpuna\ntišina" "Samo\npriorit. prekidi" "Samo\nalarmi" + "%2$s • Bežično punjenje (napuniće se za %1$s)" "%2$s • Puni se (napuniće se za %s)" "%2$s • Brzo se puni (napuniće se za %s)" "%2$s • Sporo se puni (napuniće se za %s)" diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 367fae4625b92..d7d1281b3aba5 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -407,6 +407,7 @@ "Поўная\nцішыня" "Толькі\nпрыярытэтныя" "Толькі\nбудзільнікі" + "%2$s • Ідзе бесправадная зарадка (да поўнага зараду засталося %1$s)" "Ідзе зарадка (%2$s, яшчэ %s)" "Ідзе хуткая зарадка (%2$s, яшчэ %s)" "Ідзе павольная зарадка (%2$s, яшчэ %s)" diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 4913ad4d2b4bb..b97d928fb2e55 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -399,6 +399,7 @@ "Пълна\nтишина" "Само\nс приоритет" "Само\nбудилници" + "%2$s • Зарежда се безжично (%1$s до пълно зареждане)" "%2$s • Зарежда се (%s до пълно зареждане)" "%2$s • Зарежда се бързо (%s до пълно зареждане)" "%2$s • Зарежда се бавно (%s до пълно зареждане)" diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 03392a304eaf5..38d17a8384fb0 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -399,6 +399,7 @@ "একদম\nনিরব" "শুধুমাত্র\nঅগ্রাধিকার" "শুধুমাত্র\nঅ্যালার্মগুলি" + "%2$s • ওয়্যারলেস পদ্ধতিতে চার্জ করা হচ্ছে (চার্জ সম্পূর্ণ হতে আর %1$s বাকি)" "%2$s • চার্জ হচ্ছে (পুরো চার্জ হতে %s লাগবে)" "%2$s • দ্রুত চার্জ হচ্ছে (পুরোটা হতে %s লাগবে)" "%2$s • ধীরে চার্জ হচ্ছে (পুরোটা হতে %s লাগবে)" diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index f36e1d23a955b..75c38e951278f 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -402,9 +402,10 @@ "Potpuna\ntišina" "Samo\nprioritetni prekidi" "Samo\nalarmi" - "%2$s • Punjenje (još %s do kraja)" - "%2$s • Brzo punjenje (još %s do kraja)" - "%2$s • Brzo punjenje (još %s do kraja)" + "%2$s • Bežično punjenje (još %1$s do napunjenosti" + "%2$s • Punjenje (još %s do napunjenosti" + "%2$s • Brzo punjenje (još %s do napunjenosti" + "%2$s • Brzo punjenje (još %s do napunjenosti" "Zamijeni korisnika" "Zamijeni korisnika. Trenutni korisnik je %s" "Trenutni korisnik %s" diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index ef0ecbffef23a..50551d4666c66 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -399,6 +399,7 @@ "Silenci\ntotal" "Només\ninterr. prior." "Només\nalarmes" + "%2$s • S\'està carregant sense fils (temps restant: %1$s)" "%2$s • S\'està carregant (temps restant: %s)" "%2$s • Carregant ràpidament (temps restant: %s)" "%2$s • Carregant lentament (temps restant: %s)" diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 98ac4b348682e..f216eaed30997 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -405,6 +405,7 @@ "Úplné\nticho" "Pouze\nprioritní" "Pouze\nbudíky" + "%2$s • Bezdrátové nabíjení (plně nabito za %1$s)" "%2$s • Nabíjení (plně nabito za %s)" "%2$s • Rychlé nabíjení (plně nabito za %s)" "%2$s • Pomalé nabíjení (plně nabito za %s)" diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index d73cb4217d1a0..c808eae19367c 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -399,6 +399,7 @@ "Total\nstilhed" "Kun\nprioritet" "Kun\nalarmer" + "%2$s • Trådløs opladning (%1$s til batteriet er fuldt opladet)" "%2$s • Oplader (fuldt opladet om %s)" "%2$s • Oplader hurtigt (fuldt opladet om %s)" "%2$s • Oplader langsomt (fuldt opladet om %s)" diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index d21928e0add99..bacf7739029d8 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -403,6 +403,7 @@ "Laut-\nlos" "Nur\nwichtige" "Nur\nWecker" + "%2$s • Kabelloses Laden (voll in %1$s)" "%2$s • Wird geladen (voll in %s)" "%2$s • Wird schnell geladen (voll in %s)" "%2$s • Wird langsam geladen (voll in %s)" @@ -788,7 +789,7 @@ "Minimieren" "Schließen" "Einstellungen" - "Zum Schließen nach unten ziehen" + "Zum Verwerfen nach unten ziehen" "Menü" "%s ist in Bild im Bild" "Wenn du nicht möchtest, dass %s diese Funktion verwendet, tippe, um die Einstellungen zu öffnen und die Funktion zu deaktivieren." diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 8e29a92d16072..1bb1a1e19edba 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -399,6 +399,7 @@ "Πλήρης\nσίγαση" "Μόνο\nπροτεραιότητας" "Μόνο\nειδοποιήσεις" + "%2$s • Ασύρματη φόρτιση (%1$s για πλήρη φόρτιση)" "%2$s • Φόρτιση (%s για πλήρη φόρτιση)" "%2$s • Γρήγορη φόρτιση (%s για πλήρη φόρτιση)" "%2$s • Αργή φόρτιση (%s για πλήρη φόρτιση)" diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index c88b6ca1f5992..eeebaab161e05 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -399,6 +399,7 @@ "Total\nsilence" "Priority\nonly" "Alarms\nonly" + "%2$s • Wirelessly Charging (%1$s until full)" "%2$s • Charging (%s until full)" "%2$s • Charging rapidly (%s until full)" "%2$s • Charging slowly (%s until full)" diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 74c3c0416d746..75999cd43c95f 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -399,6 +399,7 @@ "Total\nsilence" "Priority\nonly" "Alarms\nonly" + "%2$s • Wirelessly Charging (%1$s until full)" "%2$s • Charging (%s until full)" "%2$s • Charging rapidly (%s until full)" "%2$s • Charging slowly (%s until full)" diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index c88b6ca1f5992..eeebaab161e05 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -399,6 +399,7 @@ "Total\nsilence" "Priority\nonly" "Alarms\nonly" + "%2$s • Wirelessly Charging (%1$s until full)" "%2$s • Charging (%s until full)" "%2$s • Charging rapidly (%s until full)" "%2$s • Charging slowly (%s until full)" diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index c88b6ca1f5992..eeebaab161e05 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -399,6 +399,7 @@ "Total\nsilence" "Priority\nonly" "Alarms\nonly" + "%2$s • Wirelessly Charging (%1$s until full)" "%2$s • Charging (%s until full)" "%2$s • Charging rapidly (%s until full)" "%2$s • Charging slowly (%s until full)" diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index 964e654ef1cd3..a611382b9f0d9 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -399,6 +399,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎Total‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎silence‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎Priority‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎only‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎Alarms‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎only‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎ • Wirelessly Charging (‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ until full)‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎ • Charging (‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ until full)‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎ • Charging rapidly (‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ until full)‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎ • Charging slowly (‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ until full)‎‏‎‎‏‎" diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 9bed70de7ea42..a9d580bf84212 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -399,6 +399,7 @@ "Silencio\ntotal" "Solo\nprioridad" "Solo\nalarmas" + "%2$s • Carga inalámbrica (%1$s para carga completa)" "%2$s • Cargando (%s para completar)" "%2$s • Cargando rápido (%s para completar)" "%2$s • Cargando lento (%s para completar)" diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 504286697e4d3..fec2daaa61c21 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -399,6 +399,7 @@ "Silencio\ntotal" "Solo\ncon prioridad" "Solo\nalarmas" + "%2$s • Cargando sin cables (%1$s para carga completa)" "%2$s • Cargando (%s para carga completa)" "%2$s • Carga rápida (%s para carga completa)" "%2$s • Carga lenta (%s para carga completa)" diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 95ebcc41b897b..9fcadb9a12e54 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -399,6 +399,7 @@ "Täielik\nvaikus" "Ainult\nprioriteetsed" "Ainult\nalarmid" + "%2$s • Juhtmeta laadimine (%1$s täislaadimiseni)" "%2$s • Laadimine (täislaadimiseks kulub %s)" "%2$s • Kiirlaadim. (täislaadimiseks kulub %s)" "%2$s • Aegl. laad. (täislaadimiseks kulub %s)" diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index cf78d68a7fdb4..c2f5ec889eb04 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -64,7 +64,7 @@ "Ireki %1$s %2$s konektatzen den guztietan" "USB arazketa onartu?" "Ordenagailuaren RSA gakoaren erreferentzia-gako digitala hau da:\n%1$s" - "Onartu beti ordenagailu honetatik" + "Eman beti ordenagailu honetatik arazteko baimena" "Ez da onartzen USB arazketa" "Gailu honetan saioa hasita duen erabiltzaileak ezin du aktibatu USB arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira." "Handiagotu pantaila betetzeko" @@ -399,6 +399,7 @@ "Isiltasun\nosoa" "Lehentasunezkoak\nsoilik" "Alarmak\nsoilik" + "%2$s • Hari gabe kargatzen (%1$s guztiz kargatzeko)" "%2$s • Kargatzen (%s guztiz kargatzeko)" "%2$s • Bizkor kargatzen (%s guztiz kargatzeko)" "%2$s • Mantso kargatzen (%s guztiz kargatzeko)" diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 767d3d23cec4f..fe6c3f082b7ef 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -399,6 +399,7 @@ "سکوت\nکامل" "فقط\nاولویت‌دار" "فقط\nهشدارها" + "%2$s • درحال شارژ شدن به‌صورت بی‌سیم (%1$s تا شارژ کامل)" "%2$s • درحال شارژ شدن (%s تا شارژ کامل)" "%2$s • درحال شارژ سریع (%s تا شارژ کامل)" "%2$s • درحال شارژ آهسته (%s تا شارژ کامل)" diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 8657d8b48adf2..7232ebd75ebdc 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -399,6 +399,7 @@ "Täydellinen\nhiljaisuus" "Vain\ntärkeät" "Vain\nherätykset" + "%2$s • Ladataan langattomasti (täynnä %1$s päästä)" "%2$s • Ladataan (täynnä %s päästä)" "%2$s • Ladataan nopeasti (täynnä %s päästä)" "%2$s • Ladataan hitaasti (täynnä %s päästä)" diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 777dd38aacd12..69c8d06a069aa 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -399,6 +399,7 @@ "Aucune\ninterruption" "Priorités\nuniquement" "Alarmes\nuniquement" + "%2$s • En recharge sans fil (%1$s jusqu\'à la recharge complète)" "En recharge : %2$s (%s jusqu\'à charge complète)" "En recharge rapide : %2$s (%s jusqu\'à ch. comp.)" "En recharge lente : %2$s (%s jusqu\'à ch. comp.)" diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 2aa06cde9217d..4e6bed0e6040a 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -399,6 +399,7 @@ "Aucune\ninterruption" "Priorité\nuniquement" "Alarmes\nuniquement" + "%2$s • Recharge sans fil (à 100 % dans %1$s)" "%2$s • Recharge... (à 100 %% dans %s)" "%2$s • Recharge rapide… (à 100 %% dans %s)" "%2$s • Recharge lente… (à 100 %% dans %s)" diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 4c49f6637e52b..eb0f32a2e31a7 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -399,6 +399,7 @@ "Silencio\ntotal" "Só\nprioridade" "Só\nalarmas" + "%2$s • Cargando sen fíos (%1$s para completar a carga)" "%2$s • Cargando (%s para completar a carga)" "%2$s • Cargando rapidamente (%s para completar a carga)" "%2$s • Cargando lentamente (%s para completar a carga)" diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 27ad608026589..f00de71168bf0 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -399,6 +399,7 @@ "સાવ\nશાંતિ" "ફક્ત\nપ્રાધાન્યતા" "ફક્ત\nએલાર્મ્સ" + "%2$s • વાયરલેસથી ચાર્જ થઈ રહ્યું છે (પૂર્ણ થવામાં %1$s બાકી)" "%2$s • ચાર્જિંગ (પૂર્ણ થવામાં %s બાકી)" "%2$s • ઝડપથી ચાર્જિંગ (પૂર્ણ થવામાં %s બાકી)" "%2$s • ધીમેથી ચાર્જિંગ (પૂર્ણ થવામાં %s બાકી)" diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 3d5d982e1b97b..b0c0b7a44bbcb 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -399,6 +399,7 @@ "पूरी तरह\nशांत" "केवल\nप्राथमिकता" "केवल\nअलार्म" + "%2$s • वायरलेस तरीके से चार्ज हो रहा है (%1$s में पूरा होगा)" "%2$s • चार्ज हो रहा है (%s में पूरा होगा)" "%2$s • तेज़ चार्ज हो रहा है (%s में पूरा होगा)" "%2$s • धीरे चार्ज हो रहा है (%s में पूरा होगा)" diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index e984299c197db..87ab6435fd146 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -402,6 +402,7 @@ "Potpuna\ntišina" "Samo\nprioritetno" "Samo\nalarmi" + "%2$s • bežično punjenje (%1$s do napunjenosti)" "%2$s • punjenje (%s do napunjenosti)" "%2$s • brzo punjenje (%s do napunjenosti)" "%2$s • sporo punjenje (%s do napunjenosti)" diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 970b5da83130d..7995e17242b9c 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -399,6 +399,7 @@ "Teljes\nnémítás" "Csak\nprioritás" "Csak\nriasztások" + "%2$s • Vezeték nélküli töltés folyamatban (%1$s a teljes feltöltésig)" "%2$s • Töltés (%s a teljes töltöttségig)" "%2$s • Gyors töltés (%s a teljes töltöttségig)" "%2$s • Lassú töltés (%s a teljes töltöttségig)" diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 9b3b24471276e..e9665bdcb3498 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -399,6 +399,7 @@ "Ընդհանուր\nլուռ վիճակը" "Միայն\nկարևորները" "Միայն\nզարթուցիչ" + "%2$s • Անլար լիցքավորում (մնացել է %1$s)" "%2$s • Լիցքավորում (մնացել է %s)" "%2$s • Արագ լիցքավորում (մնացել է %s)" "%2$s • Դանդաղ լիցքավորում (մնացել է %s)" @@ -601,7 +602,7 @@ "Անջատել" "Ծանուցումների ընդլայնված կառավարման օգնությամբ կարող եք յուրաքանչյուր հավելվածի ծանուցումների համար նշանակել կարևորության աստիճան՝ 0-5 սահմաններում: \n\n""5-րդ աստիճան"" \n- Ցուցադրել ծանուցումների ցանկի վերևում \n- Թույլատրել լիաէկրան ընդհատումները \n- Միշտ ցուցադրել կարճ ծանուցումները \n\n""4-րդ աստիճան"" \n- Արգելել լիաէկրան ընդհատումները \n- Միշտ ցուցադրել կարճ ծանուցումները \n\n""3-րդ աստիճան"" \n- Արգելել լիաէկրան ընդհատումները \n- Արգելել կարճ ծանուցումների ցուցադրումը \n\n""2-րդ աստիճան"" \n- Արգելել լիաէկրան ընդհատումները \n- Արգելել կարճ ծանուցումների ցուցադրումը \n- Անջատել ձայնը և թրթռումը \n\n""1-ին աստիճան"" \n- Արգելել լիաէկրան ընդհատումները \n- Արգելել կարճ ծանուցումների ցուցադրումը \n- Անջատել ձայնը և թրթռումը \n- Չցուցադրել կողպէկրանում և կարգավիճակի գոտում \n- Ցուցադրել ծանուցումների ցանկի ներքևում \n\n""0-րդ աստիճան"\n"- Արգելափակել հավելվածի բոլոր ծանուցումները" "Ծանուցումներ" - "Դուք այլևս չեք ստանա այս ծանուցումները" + "Այլևս չեք ստանա նման ծանուցումներ" "Այս ծանուցումները կծալվեն:" "Դուք սովորաբար փակում եք այս ծանուցումները: \nՇարունակե՞լ ցուցադրել դրանք:" "Ցուցադրե՞լ այս ծանուցումները։" diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index bd5fd938fdaea..cdbad365712a4 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -399,6 +399,7 @@ "Senyap\ntotal" "Hanya\nprioritas" "Hanya\nalarm" + "%2$s • Mengisi Daya Secara Nirkabel (%1$s hingga penuh)" "%2$s • Mengisi daya (%s hingga penuh)" "%2$s • Mengisi daya dengan cepat (%s hingga penuh)" "%2$s • Mengisi daya dengan lambat (%s hingga penuh)" diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 359ad1c081cce..d53698172d8ec 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -399,6 +399,7 @@ "Algjör\nþögn" "Aðeins\nforgangur" "Aðeins\nvekjarar" + "%2$s • Þráðlaus hleðsla (%1$s fram að fullri hleðslu)" "%2$s • Í hleðslu (%s fram að fullri hleðslu)" "%2$s • Hröð hleðsla (%s að fullri hleðslu)" "%2$s • Hæg hleðsla (%s fram að fullri hleðslu)" diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 77fad860230cd..fe0c7e087c7bc 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -399,6 +399,7 @@ "Silenzio\ntotale" "Solo con\npriorità" "Solo\nsveglie" + "%2$s • In ricarica wireless (%1$s al termine)" "%2$s • In carica (%s al termine)" "%2$s • Ricarica veloce (%s al termine)" "%2$s • Ricarica lenta (%s al termine)" diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index d48baa4b6c7e1..a36a91b925c0f 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -405,6 +405,7 @@ "שקט\nמוחלט" "הודעות בעדיפות\nבלבד" "התראות\nבלבד" + "%2$s • בטעינה אלחוטית (%1$s עד לסיום)" "%2$s • בטעינה (%s עד לסיום)" "%2$s • בטעינה מהירה (%s עד לסיום)" "%2$s • בטעינה איטית (%s עד לסיום)" @@ -800,8 +801,8 @@ "אם אינך רוצה שהתכונה הזו תשמש את %s, יש להקיש כדי לפתוח את ההגדרות ולכבות את התכונה." "הפעל" "השהה" - "ברצוני לדלג אל הבא" - "ברצוני לדלג אל הקודם" + "אפשר לדלג אל הבא" + "אפשר לדלג אל הקודם" "הטלפון כבה עקב התחממות" "הטלפון פועל כרגיל עכשיו" "הטלפון שלך התחמם יותר מדי וכבה כדי להתקרר. הטלפון פועל כרגיל עכשיו.\n\nייתכן שהטלפון יתחמם יותר מדי אם:\n • תשתמש באפליקציות עתירות משאבים (כגון משחקים, אפליקציות וידאו או אפליקציות ניווט)\n • תוריד או תעלה קבצים גדולים\n • תשתמש בטלפון בטמפרטורות גבוהות" diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 408e270bf5b83..86e347c048234 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -399,6 +399,7 @@ "サイレント\n" "重要な\n通知のみ" "アラーム\nのみ" + "%2$s • ワイヤレス充電中(完了まで %1$s)" "%2$s • 充電中(完了まで %s)" "%2$s • 急速充電中(完了まで %s)" "%2$s • 低速充電中(完了まで %s)" diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 6b6a8a3be988e..ac76791c40078 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -399,6 +399,7 @@ "სრული\nსიჩუმე" "მხოლოდ\nპრიორიტეტულები" "მხოლოდ\nგაფრთხილებები" + "%2$s • იტენება უსადენოდ (%1$s სრულ დატენამდე)" "%2$s • იტენება (%s სრულ დატენვამდე)" "%2$s • იტენება სწრაფად (%s სრულ დატენვამდე)" "%2$s • იტენება ნელა (%s სრულ დატენვამდე)" diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 9c3b853c7194f..8191df0336961 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -399,6 +399,7 @@ "Толық\nтыныштық" "Тек\nбасымдық" "Тек\nдабылдар" + "%2$s • Сымсыз зарядтау (толық зарядталуға %1$s қалды)" "%2$s • Зарядталуда (толуына %s қалды)" "%2$s • Жылдам зарядталуда (толуына %s қалды)" "%2$s • Баяу зарядталуда (толуына %s қалды)" diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 4c2b8c1f27eb9..435efa365acc6 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -399,6 +399,7 @@ "ស្ងៀមស្ងាត់\nទាំងស្រុង" "អាទិភាព\nប៉ុណ្ណោះ" "សំឡេងរោទ៍\nប៉ុណ្ណោះ" + "%2$s • កំពុង​សាកថ្ម​ឥតខ្សែ (%1$s ទៀត​ទើប​ពេញ)" "%2$s • កំពុង​សាកថ្ម (%s ទៀតទើប​ពេញ)" "%2$s • កំពុង​សាកថ្មយ៉ាង​ឆាប់រហ័ស (%s ទៀតទើបពេញ)" "%2$s • កំពុង​សាកថ្ម​​យឺត (%s ទៀតទើប​ពេញ)" diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 9fedf32eddb51..b0423f6571998 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -399,6 +399,7 @@ "ಸಂಪೂರ್ಣ\nನಿಶ್ಯಬ್ಧ" "ಆದ್ಯತೆ\nಮಾತ್ರ" "ಅಲಾರಮ್‌ಗಳು\nಮಾತ್ರ" + "%2$s • ವೈರ್‌ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು %1$s ಸಮಯ ಉಳಿದಿದೆ)" "%2$s • ಚಾರ್ಜ್‌ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು %s ಸಮಯ ಬಾಕಿ)" "%2$s • ವೇಗವಾಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು %s ಸಮಯ ಬಾಕಿ)" "%2$s • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್‌ಆಗುತ್ತಿದೆ (ಪೂರ್ಣವಾಗಲು %s ಸಮಯ ಬಾಕಿ)" diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index a75c47a65e88a..4930edada6d57 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -399,6 +399,7 @@ "모두\n차단" "중요 알림만\n허용" "알람만\n" + "%2$s • 무선 충전 중(%1$s 후 충전 완료)" "%2$s • 충전 중(%s 후 충전 완료)" "%2$s • 고속 충전 중(%s 후 충전 완료)" "%2$s • 저속 충전 중(%s 후 충전 완료)" diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 30d73cdc93871..b32715a13639f 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -399,6 +399,7 @@ "Тым-\nтырс" "Артыкчылыктуу\nгана" "Ойготкучтар\nгана" + "%2$s • Зымсыз кубатталууда (толгонго чейин %1$s калды)" "%2$s • Кубатталууда (толгонго чейин %s калды)" "%2$s • Тез кубатталууда (толгонго чейин %s калды)" "%2$s • Жай кубатталууда (толгонго чейин %s калды)" diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 461568dd2cee4..c20b28b30c61b 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -399,6 +399,7 @@ "ຄວາມ​ງຽບ\nທັງ​ໝົດ" "ບຸ​ລິ​ມະ​ສິດ\nເທົ່າ​ນັ້ນ" "ໂມງ​ປຸກ\nເທົ່າ​ນັ້ນ" + "%2$s • ກຳລັງສາກໄຟແບບໄຮ້ສາຍ (%1$s ຈົນກວ່າຈະເຕັມ)" "%2$s • ກຳລັງສາກ (ອີກ %s ຈຶ່ງຈະເຕັມ)" "%2$s • ກຳລັງສາກແບບດ່ວນ (ອີກ %s ຈຶ່ງຈະເຕັມ)" "%2$s • ກຳລັງສາກແບບຊ້າ (ອີກ %s ຈຶ່ງຈະເຕັມ)" diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index f340667315083..605145d11d863 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -405,6 +405,7 @@ "Visiška\ntyla" "Tik\nprioritetiniai" "Tik\nsignalai" + "%2$s • Įkraunama be laidų (%1$s iki visiško įkrovimo)" "%2$s • Įkraunama (%s iki visiško įkrovimo)" "%2$s • Greitai įkraunama (%s iki visiško įkr.)" "%2$s • Lėtai įkraunama (%s iki visiško įkr.)" diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 30d3c148f64bf..3988fb353b955 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -402,6 +402,7 @@ "Pilnīgs\nklusums" "Tikai\nprioritārie" "Tikai\nsignāli" + "%2$s • Notiek bezvadu uzlāde (%1$s līdz pilnai uzlādei)" "%2$s • Notiek uzlāde (%s līdz pilnai uzlādei)" "%2$s • Ātrā uzlāde (%s līdz pilnai uzlādei)" "%2$s • Lēnā uzlāde (%s līdz pilnai uzlādei)" diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 86ca1d45fb4b9..e60baec9f9c5c 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -399,6 +399,7 @@ "Целосна\nтишина" "Само\nприоритетни" "Само\nаларми" + "%2$s • Безжично полнење (%1$s до полна батерија)" "%2$s • Се полни (%s до полна батерија)" "%2$s • Брзо полнење (%s до полна батерија)" "%2$s • Бавно полнење (%s до полна батерија)" diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 0c6ea9934d686..17dc9f89974fe 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -399,6 +399,7 @@ "പൂർണ്ണ\nനിശബ്‌ദത" "മുൻഗണന\nമാത്രം" "അലാറങ്ങൾ\nമാത്രം" + "%2$s • വയർലെസ്സ് ആയി ചാർജ്ജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ %1$s)" "%2$s • ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ %s)" "%2$s • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ %s)" "%2$s • പതുക്കെ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ %s)" diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 00dea5304bd2c..72fad95c98457 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -397,6 +397,7 @@ "Дуугүй\nболгох" "Зөвхөн\nхамгийн чухлыг" "Зөвхөн\nсэрүүлэг" + "%2$s • Утасгүй цэнэглэж байна (дүүргэхэд %1$s шаардлагатай)" "%2$s • Цэнэглэж байна (дүүргэхэд %s шаардлагатай)" "%2$s • Хурдан цэнэглэж байна (дүүргэхэд %s шаардлагатай)" "%2$s • Удаан цэнэглэж байна (дүүргэхэд %s шаардлагатай)" diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index bc815b47de7ea..200fffff2c6c0 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -399,6 +399,7 @@ "संपूर्ण\nशांतता" "केवळ\nप्राधान्य" "केवळ\nअलार्म" + "%2$s • वायरलेस पद्धतीने चार्ज करत आहे (%1$sमध्ये पूर्ण चार्ज होईल)" "%2$s • चार्ज होत आहे (%s मध्ये पूर्ण होईल)" "%2$s • वेगाने चार्ज होत आहे (%s मध्ये पूर्ण होईल)" "%2$s • सावकाश चार्ज होत आहे (%s मध्ये पूर्ण होईल)" diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index d41bbb6c41c8a..2782a607ce595 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -399,6 +399,7 @@ "Senyap\nsepenuhnya" "Keutamaan\nsahaja" "Penggera\nsahaja" + "%2$s • Mengecas Secara Wayarles (%1$s hingga penuh)" "%2$s • Mengecas (%s hingga penuh)" "%2$s • Mengecas dengan cepat (%s hingga penuh)" "%2$s • Mengecas dengan perlahan (%s hingga penuh)" diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 31adb98f91fed..3fe341b32a75b 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -399,6 +399,7 @@ "လုံးဝ\nတိတ်ဆိတ်ခြင်း" "ဦးစားပေးမှု\nသာ" "နှိုးစက်များ\nသာ" + "%2$s • ကြိုးမဲ့ အားသွင်းနေသည် (အားပြည့်ရန် %1$s လို)" "%2$s • အားသွင်းနေသည် (အားပြည့်ရန် %s လို)" "%2$s • အမြန်အားသွင်းနေသည် (အားပြည့်ရန် %s လို)" "%2$s • နှေးကွေးစွာ သွင်းနေသည် (အားပြည့်ရန် %s လို)" diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 5dacdeab4c7b8..e6c20f21590a0 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -399,6 +399,7 @@ "Total\nstillhet" "Bare\nPrioritet" "Bare\nalarmer" + "%2$s • Lader trådløst (fulladet om %1$s)" "%2$s • Lader (fulladet om %s)" "%2$s • Lader raskt (fulladet om %s)" "%2$s • Lader sakte (fulladet om %s)" diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 5a817480e7112..f5b345122723c 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -399,6 +399,7 @@ "पूरै\nशान्त" "प्राथमिकता \nमात्र" "अलार्महरू \nमात्र" + "%2$s • ताररहित तरिकाले चार्ज गर्दै (%1$s पूर्ण नभएसम्म)" "%2$s • चार्ज गरिँदै (चार्ज पूरा हुन %s बाँकी)" "%2$s • द्रुत गतिमा चार्ज गरिँदै (%s समय बाँकी)" "%2$s • मन्द गतिमा चार्ज गरिँदै (%s समय बाँकी)" diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index b0ccc126a4b31..0bb4e83099750 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -399,6 +399,7 @@ "Totale\nstilte" "Alleen\nprioriteit" "Alleen\nalarmen" + "%2$s • Draadloos opladen (vol over %1$s)" "%2$s • Opladen (vol over %s)" "%2$s • Snel opladen (vol over %s)" "%2$s • Langzaam opladen (vol over %s)" diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index d976f68f01e8d..c0fa865d9e1e5 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -399,6 +399,7 @@ "ସମ୍ପୂର୍ଣ୍ଣ\nନୀରବ" "କେବଳ\nପ୍ରାଥମିକତା" "କେବଳ\nଆଲାର୍ମ" + "%2$s • ୱାୟାର୍‍‍ଲେସ୍‍‍ଭାବରେ ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ %1$s ବଳକା ଅଛି)" "%2$s • ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ %s ବଳକା ଅଛି)" "%2$s • ଶୀଘ୍ର ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ %s ବଳକା ଅଛି)" "%2$s • ଧୀରେ ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ %s ବଳକା ଅଛି)" diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index a52cf01e8be88..8f1b8fb89464e 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -399,6 +399,7 @@ "ਕੁਲ \n ਚੁੱਪੀ" "ਕੇਵਲ\nਤਰਜੀਹੀ" "ਕੇਵਲ\nਅਲਾਰਮ" + "%2$s • ਵਾਇਰਲੈੱਸ ਤੌਰ \'ਤੇ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (%1$s ਵਿੱਚ ਮੁਕੰਮਲ)" "%2$s • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (%s ਵਿੱਚ ਮੁਕੰਮਲ)" "%2$s • ਤੇਜ਼ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (%s ਵਿੱਚ ਮੁਕੰਮਲ)" "%2$s • ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (%s ਵਿੱਚ ਮੁਕੰਮਲ)" diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 1a278eed3a529..aa1ab04df2abb 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -405,6 +405,7 @@ "Całkowita\ncisza" "Tylko\npriorytetowe" "Tylko\nalarmy" + "%2$s • Ładowanie bezprzewodowe (%1$s do pełnego naładowania)" "%2$s • Ładowanie (%s do końca)" "%2$s • Szybkie ładowanie (%s do końca)" "%2$s • Wolne ładowanie (%s do końca)" diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index ae96964925c39..476a0f4214695 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -399,6 +399,7 @@ "Silêncio\ntotal" "Somente\nprioridade" "Somente\nalarmes" + "%2$s • Carregando sem fio (%1$s até a conclusão)" "%2$s • Carregando (%s até a conclusão)" "%2$s • Carga rápida (%s até a conclusão)" "%2$s • Carga lenta (%s até a conclusão)" diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 4e93f55c3a273..d001d9bfac6dd 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -399,6 +399,7 @@ "Silêncio\ntotal" "Apenas\nprioridade" "Apenas\nalarmes" + "%2$s • Carregamento sem fios (%1$s até ficar completo)" "%2$s • A carregar (%s até à carga máxima)…" "%2$s • A carregar rapid. (%s até carga máx.)…" "%2$s • A carregar lentam. (%s até carga máx.)…" diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index ae96964925c39..476a0f4214695 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -399,6 +399,7 @@ "Silêncio\ntotal" "Somente\nprioridade" "Somente\nalarmes" + "%2$s • Carregando sem fio (%1$s até a conclusão)" "%2$s • Carregando (%s até a conclusão)" "%2$s • Carga rápida (%s até a conclusão)" "%2$s • Carga lenta (%s até a conclusão)" diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index fc03aa237d090..adf3659e027c8 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -402,6 +402,7 @@ "Niciun\nsunet" "Numai\ncu prioritate" "Numai\nalarme" + "%2$s • Încărcare Wireless (%1$s până la încărcarea completă)" "%2$s • Se încarcă (%s până la finalizare)" "%2$s • Se încarcă rapid (%s până la finalizare)" "%2$s • Se încarcă lent (%s până la finalizare)" diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 611bb27a565e5..4b1004f7be0be 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -405,6 +405,7 @@ "Полная\nтишина" "Только\nважные" "Только\nбудильник" + "%2$s • Беспроводная зарядка (ещё %1$s)" "Идет зарядка (%2$s, ещё %s)" "Идет быстрая зарядка (%2$s, ещё %s)" "Идет медленная зарядка (%2$s, ещё %s)" diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 6c5804f1973a4..6df8bf13d99a3 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -399,6 +399,7 @@ "සම්පූර්ණ\nනිහඬතාව" "ප්‍රමුඛතා\nපමණි" "ඇඟවීම්\nපමණි" + "%2$s • නොරැහැන්ව ආරෝපණය වේ (පිරෙන තෙක්%1$s )" "%2$s • ආරෝපණය වෙමින් (%s සම්පූර්ණ වන තෙක්)" "%2$s • වේගයෙන් ආරෝපණය වෙමින් (%s සම්පූර්ණ වන තෙක්)" "%2$s • සෙමින් ආරෝපණය වෙමින් (%s සම්පූර්ණ වන තෙක්)" diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index b4f2b691699dd..c5684593b3d60 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -405,6 +405,7 @@ "Úplné\nticho" "Iba\nprioritné" "Iba\nbudíky" + "%2$s • Prebieha bezdrôtové nabíjanie (úplné nabitie o %1$s)" "%2$s • Nabíja sa (úplné nabitie o %s)" "%2$s • Nabíja sa rýchlo (úplné nabitie o %s)" "%2$s • Nabíja sa pomaly (úplné nabitie o %s)" diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index e9c53968159a5..58daf9df7889a 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -405,6 +405,7 @@ "Popolna\ntišina" "Samo\nprednostno" "Samo\nalarmi" + "%2$s • brezžično polnjenje (%1$s do napolnjenosti)" "%2$s • polnjenje (%s do napolnjenosti)" "%2$s • hitro polnjenje (%s do napolnjenosti)" "%2$s • počasno polnjenje (%s do napolnjenosti)" diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 4c1c7b27f3399..ec36bca0d4412 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -399,6 +399,7 @@ "Heshtje\ne plotë" "Vetëm\nme prioritet" "Vetëm\nalarmet" + "%2$s • Po ngarkohet me valë (%1$s derisa të mbushet)" "%2$s • Po ngarkohet (%s derisa të mbushet)" "%2$s • Po ngarkohet me shpejtësi (%s derisa të mbushet)" "%2$s • Po ngarkohet ngadalë (%s derisa të mbushet)" @@ -799,7 +800,7 @@ "Disa funksione janë të kufizuara kur telefoni është duke u ftohur" "Telefoni yt do të përpiqet automatikisht që të ftohet. Mund ta përdorësh përsëri telefonin, por ai mund të punojë më ngadalë.\n\nPasi telefoni të jetë ftohur, ai do të punojë si normalisht." "Shkëput karikuesin" - "Ka një problem me karikimin e kësaj pajisjeje. Shkëpute përshtatësin e energjisë dhe trego kujdes pasi kablloja mund të jetë e ngrohtë." + "Ka një problem me karikimin e kësaj pajisjeje. Hiqe spinën dhe trego kujdes pasi kablloja mund të jetë e ngrohtë." "Shiko hapat për kujdesin" "Shkurtorja majtas" "Shkurtorja djathtas" diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 2078c349c3fb9..2288e50a86755 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -402,6 +402,7 @@ "Потпуна\nтишина" "Само\nприорит. прекиди" "Само\nаларми" + "%2$s • Бежично пуњење (напуниће се за %1$s)" "%2$s • Пуни се (напуниће се за %s)" "%2$s • Брзо се пуни (напуниће се за %s)" "%2$s • Споро се пуни (напуниће се за %s)" diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 0fad6b611b1e8..588e141ddbc57 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -399,6 +399,7 @@ "Helt\ntyst" "Endast\nprioriterade" "Endast\nalarm" + "%2$s • Laddas trådlöst (fulladdat om %1$s)" "%2$s • Laddas (fulladdat om %s)" "%2$s • Laddas snabbt (fulladdat om %s)" "%2$s • Laddas långsamt (fulladdat om %s)" diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 5a3bd04fb226c..e0845f4cf2fc2 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -399,6 +399,7 @@ "Kimya\nkabisa" "Kipaumbele\npekee" "Kengele\npekee" + "%2$s • Inachaji Bila Kutumia Waya (imebakisha %1$s ili ijae)" "%2$s • Inachaji (Imebakisha %s ili ijae)" "%2$s • Inachaji kwa kasi (Imebakisha %s ili ijae)" "%2$s • Inachaji pole pole (Imebakisha %s ili ijae)" diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 33e9f9d4296c4..caec9fcfcb911 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -399,6 +399,7 @@ "அறிவிப்புகள்\nவேண்டாம்" "முன்னுரிமைகள்\nமட்டும்" "அலாரங்கள்\nமட்டும்" + "%2$s • வயர்லெஸ் முறையில் சார்ஜாகிறது (முடிய %1$s ஆகும்)" "%2$s • சார்ஜாகிறது (முழு சார்ஜ்: %s)" "%2$s • வேகமாகச் சார்ஜாகிறது (முழு சார்ஜ்: %s)" "%2$s • மெதுவாகச் சார்ஜாகிறது (முழு சார்ஜ்: %s)" diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index e8d0761f37113..e0118f54b1920 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -46,7 +46,7 @@ "బ్యాటరీ సేవర్‌ను ఆన్ చేయండి" "సెట్టింగ్‌లు" "Wi-Fi" - "స్క్రీన్‌ను స్వయంచాలకంగా తిప్పండి" + "స్క్రీన్ ఆటో-రొటేట్‌" "మ్యూట్" "స్వయంచాలకం" "నోటిఫికేషన్‌లు" @@ -289,7 +289,7 @@ "ఆన్ చేస్తోంది…" "ప్రకాశం" "స్వయంచాలకంగా తిప్పడం" - "స్క్రీన్‌ను స్వయంచాలకంగా తిప్పు" + "స్క్రీన్ ఆటో-రొటేట్‌" "%s మోడ్" "తిప్పడం లాక్ చేయబడింది" "పోర్ట్రెయిట్" @@ -399,6 +399,7 @@ "మొత్తం\nనిశ్శబ్దం" "ప్రాధాన్యమైనవి\nమాత్రమే" "అలారాలు\nమాత్రమే" + "%2$s • వైర్‌లెస్‌గా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి %1$s)" "%2$s • ఛార్జ్ అవుతోంది (పూర్తి కావడానికి %s)" "%2$s • వేగంగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి %s)" "%2$s • నెమ్మదిగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి %s)" diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index fcd82ce4033ec..b5bd061f11a88 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -399,6 +399,7 @@ "ปิดเสียง\nทั้งหมด" "เฉพาะเรื่อง\nสำคัญ" "เฉพาะปลุก\nเท่านั้น" + "%2$s • กำลังชาร์จแบบไร้สาย (อีก %1$sจะเต็ม)" "%2$s • กำลังชาร์จ (อีก %s จะเต็ม)" "%2$s • กำลังชาร์จอย่างเร็ว (อีก %s จะเต็ม)" "%2$s • กำลังชาร์จอย่างช้าๆ (อีก %s จะเต็ม)" diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 4cc88130e20f0..06525957b1767 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -399,6 +399,7 @@ "Ganap na\nkatahimikan" "Priyoridad\nlang" "Mga alarm\nlang" + "%2$s • Wireless na Nagcha-charge (%1$s bago mapuno)" "%2$s • Nagcha-charge (%s hanggang mapuno)" "%2$s • Mabilis na nagcha-charge (%s na lang)" "%2$s • Mabagal na nagcha-charge (%s na lang)" diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 62bf05a5f0641..2d7b13c871c5f 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -399,6 +399,7 @@ "Tamamen\nsessiz" "Yalnızca\nöncelik" "Yalnızca\nalarmlar" + "%2$s • Kablosuz Şarj Oluyor (tam şarj olması için kalan süre: %1$s)" "%2$s • Şarj oluyor (dolmasına %s kaldı)" "%2$s • Hızlı şarj oluyor (dolmasına %s kaldı)" "%2$s • Yavaş şarj oluyor (dolmasına %s kaldı)" diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index bc59dc848c97c..bcf1eff499a9d 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -405,6 +405,7 @@ "Без\nсигналів" "Лише\nприорітетні" "Лише\nсигнали" + "%2$s • Бездротове заряджання (залишилося %1$s)" "%2$s • Заряджання (%s до повного)" "%2$s • Швидке заряджання (%s до повного)" "%2$s • Повільне заряджання (%s до повного)" diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 0bf1647c80561..0df772e61fb86 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -399,6 +399,7 @@ "مکمل\nخاموشی" "صرف\nترجیحی" "صرف\nالارمز" + "%2$s • وائرلیس چارجنگ (مکمل ہونے میں%1$s باقی)" "%2$s • چارج ہو رہا ہے (مکمل ہونے میں %s باقی)" "%2$s • تیزی سے چارج ہو رہا ہے (مکمل ہونے میں %s باقی)" "%2$s • آہستہ چارج ہو رہا ہے (مکمل ہونے میں %s باقی)" diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index c359bdc7065a2..69bb774b70673 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -399,6 +399,7 @@ "Tinchlik\nsaqlansin" "Faqat\nmuhimlar" "Faqat\nsignallar" + "%2$s • Simsiz quvvat olmoqda (%1$s qoldi)" "%2$s • Quvvat olmoqda (%s qoldi)" "%2$s • Tez quvvat olmoqda (%s qoldi)" "%2$s • Sekin quvvat olmoqda (%s qoldi)" diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index dcdbe80e84fc4..b7896d0127927 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -399,6 +399,7 @@ "Hoàn toàn\ntắt tiếng" "Chỉ\nưu tiên" "Chỉ\nbáo thức" + "%2$s • Đang sạc không dây (%1$s cho tới khi đầy)" "%2$s • Đang sạc (%s cho tới khi đầy)" "%2$s • Đang sạc nhanh (%s cho tới khi đầy)" "%2$s • Đang sạc chậm (%s cho tới khi đầy)" diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index add9e57160416..a5af3f4c0980d 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -399,6 +399,7 @@ "完全\n静音" "仅限\n优先打扰" "仅限\n闹钟" + "%2$s • 正在无线充电(还需 %1$s充满)" "%2$s • 正在充电(还需 %s充满)" "%2$s • 正在快速充电(还需 %s充满)" "%2$s • 正在慢速充电(还需 %s充满)" diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 32101469b15d4..40894d6003e59 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -399,6 +399,7 @@ "完全\n靜音" "僅限\n優先" "僅限\n鬧鐘" + "%2$s • 無線充電中 (%1$s後完成充電)" "%2$s • 正在充電 (%s後完成充電)" "%2$s • 正在快速充電 (%s後完成充電)" "%2$s • 正在慢速充電 (%s後完成)" diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 408ef84b2977c..98b8e6740bcf0 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -399,6 +399,7 @@ "完全\n靜音" "僅允許\n優先通知" "僅允許\n鬧鐘" + "%2$s • 無線充電 (%1$s後充飽)" "%2$s • 充電中 (%s後充飽)" "%2$s • 快速充電中 (%s後充飽)" "%2$s • 慢速充電中 (%s後充飽)" diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 076487e12c68d..24ecb307e064c 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -399,6 +399,7 @@ "Ukuthula\niokuphelele" "Okubalulekile\nkuphela" "Ama-alamu\nkuphela" + "%2$s • Ishanga ngokungenantambo (%1$s ize igcwale)" "%2$s • Iyashaja (%s ize igcwale)" "%2$s • ishaja kaningi (%s ize igcwale)" "%2$s • Ishaja kancane (%s ize igcwale)" diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index c9f9ab675a75f..17cece1a2245a 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -867,7 +867,8 @@ public class ConnectivityService extends IConnectivityManager.Stub mPermissionMonitor = new PermissionMonitor(mContext, mNetd); - //set up the listener for user state for creating user VPNs + // Set up the listener for user state for creating user VPNs. + // Should run on mHandler to avoid any races. IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_USER_STARTED); intentFilter.addAction(Intent.ACTION_USER_STOPPED); @@ -875,7 +876,11 @@ public class ConnectivityService extends IConnectivityManager.Stub intentFilter.addAction(Intent.ACTION_USER_REMOVED); intentFilter.addAction(Intent.ACTION_USER_UNLOCKED); mContext.registerReceiverAsUser( - mUserIntentReceiver, UserHandle.ALL, intentFilter, null, null); + mUserIntentReceiver, + UserHandle.ALL, + intentFilter, + null /* broadcastPermission */, + mHandler); mContext.registerReceiverAsUser(mUserPresentReceiver, UserHandle.SYSTEM, new IntentFilter(Intent.ACTION_USER_PRESENT), null, null); @@ -3738,12 +3743,14 @@ public class ConnectivityService extends IConnectivityManager.Stub } /** - * Return the information of all ongoing VPNs. This method is used by NetworkStatsService - * and not available in ConnectivityManager. + * Return the information of all ongoing VPNs. + * + *

    This method is used to update NetworkStatsService. + * + *

    Must be called on the handler thread. */ - @Override - public VpnInfo[] getAllVpnInfo() { - enforceConnectivityInternalPermission(); + private VpnInfo[] getAllVpnInfo() { + ensureRunningOnConnectivityServiceThread(); synchronized (mVpns) { if (mLockdownEnabled) { return new VpnInfo[0]; @@ -3815,17 +3822,27 @@ public class ConnectivityService extends IConnectivityManager.Stub * handler thread through their agent, this is asynchronous. When the capabilities objects * are computed they will be up-to-date as they are computed synchronously from here and * this is running on the ConnectivityService thread. - * TODO : Fix this and call updateCapabilities inline to remove out-of-order events. */ private void updateAllVpnsCapabilities() { + Network defaultNetwork = getNetwork(getDefaultNetwork()); synchronized (mVpns) { for (int i = 0; i < mVpns.size(); i++) { final Vpn vpn = mVpns.valueAt(i); - vpn.updateCapabilities(); + NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork); + updateVpnCapabilities(vpn, nc); } } } + private void updateVpnCapabilities(Vpn vpn, @Nullable NetworkCapabilities nc) { + ensureRunningOnConnectivityServiceThread(); + NetworkAgentInfo vpnNai = getNetworkAgentInfoForNetId(vpn.getNetId()); + if (vpnNai == null || nc == null) { + return; + } + updateCapabilities(vpnNai.getCurrentScore(), vpnNai, nc); + } + @Override public boolean updateLockdownVpn() { if (Binder.getCallingUid() != Process.SYSTEM_UID) { @@ -4132,21 +4149,27 @@ public class ConnectivityService extends IConnectivityManager.Stub } private void onUserAdded(int userId) { + Network defaultNetwork = getNetwork(getDefaultNetwork()); synchronized (mVpns) { final int vpnsSize = mVpns.size(); for (int i = 0; i < vpnsSize; i++) { Vpn vpn = mVpns.valueAt(i); vpn.onUserAdded(userId); + NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork); + updateVpnCapabilities(vpn, nc); } } } private void onUserRemoved(int userId) { + Network defaultNetwork = getNetwork(getDefaultNetwork()); synchronized (mVpns) { final int vpnsSize = mVpns.size(); for (int i = 0; i < vpnsSize; i++) { Vpn vpn = mVpns.valueAt(i); vpn.onUserRemoved(userId); + NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork); + updateVpnCapabilities(vpn, nc); } } } @@ -4165,6 +4188,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private BroadcastReceiver mUserIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + ensureRunningOnConnectivityServiceThread(); final String action = intent.getAction(); final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); if (userId == UserHandle.USER_NULL) return; @@ -4650,6 +4674,19 @@ public class ConnectivityService extends IConnectivityManager.Stub return getNetworkForRequest(mDefaultRequest.requestId); } + @Nullable + private Network getNetwork(@Nullable NetworkAgentInfo nai) { + return nai != null ? nai.network : null; + } + + private void ensureRunningOnConnectivityServiceThread() { + if (mHandler.getLooper().getThread() != Thread.currentThread()) { + throw new IllegalStateException( + "Not running on ConnectivityService thread: " + + Thread.currentThread().getName()); + } + } + private boolean isDefaultNetwork(NetworkAgentInfo nai) { return nai == getDefaultNetwork(); } @@ -5197,6 +5234,8 @@ public class ConnectivityService extends IConnectivityManager.Stub updateTcpBufferSizes(newNetwork); mDnsManager.setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers()); notifyIfacesChangedForNetworkStats(); + // Fix up the NetworkCapabilities of any VPNs that don't specify underlying networks. + updateAllVpnsCapabilities(); } private void processListenRequests(NetworkAgentInfo nai, boolean capabilitiesChanged) { @@ -5630,6 +5669,10 @@ public class ConnectivityService extends IConnectivityManager.Stub // doing. updateSignalStrengthThresholds(networkAgent, "CONNECT", null); + if (networkAgent.isVPN()) { + updateAllVpnsCapabilities(); + } + // Consider network even though it is not yet validated. final long now = SystemClock.elapsedRealtime(); rematchNetworkAndRequests(networkAgent, ReapUnvalidatedNetworks.REAP, now); @@ -5775,6 +5818,7 @@ public class ConnectivityService extends IConnectivityManager.Stub * Must be called on the handler thread. */ private Network[] getDefaultNetworks() { + ensureRunningOnConnectivityServiceThread(); ArrayList defaultNetworks = new ArrayList<>(); NetworkAgentInfo defaultNetwork = getDefaultNetwork(); for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { @@ -5790,8 +5834,15 @@ public class ConnectivityService extends IConnectivityManager.Stub * properties tracked by NetworkStatsService on an active iface has changed. */ private void notifyIfacesChangedForNetworkStats() { + ensureRunningOnConnectivityServiceThread(); + String activeIface = null; + LinkProperties activeLinkProperties = getActiveLinkProperties(); + if (activeLinkProperties != null) { + activeIface = activeLinkProperties.getInterfaceName(); + } try { - mStatsService.forceUpdateIfaces(getDefaultNetworks()); + mStatsService.forceUpdateIfaces( + getDefaultNetworks(), getAllVpnInfo(), getAllNetworkState(), activeIface); } catch (Exception ignored) { } } @@ -5823,7 +5874,11 @@ public class ConnectivityService extends IConnectivityManager.Stub success = mVpns.get(user).setUnderlyingNetworks(networks); } if (success) { - mHandler.post(() -> notifyIfacesChangedForNetworkStats()); + mHandler.post(() -> { + // Update VPN's capabilities based on updated underlying network set. + updateAllVpnsCapabilities(); + notifyIfacesChangedForNetworkStats(); + }); } return success; } diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 2a80f0e7c2916..56510b7e18b33 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -273,7 +273,7 @@ public class Vpn { mNetworkCapabilities = new NetworkCapabilities(); mNetworkCapabilities.addTransportType(NetworkCapabilities.TRANSPORT_VPN); mNetworkCapabilities.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN); - updateCapabilities(); + updateCapabilities(null /* defaultNetwork */); loadAlwaysOnPackage(); } @@ -300,18 +300,39 @@ public class Vpn { updateAlwaysOnNotification(detailedState); } - public void updateCapabilities() { - final Network[] underlyingNetworks = (mConfig != null) ? mConfig.underlyingNetworks : null; - updateCapabilities(mContext.getSystemService(ConnectivityManager.class), underlyingNetworks, + /** + * Updates {@link #mNetworkCapabilities} based on current underlying networks and returns a + * defensive copy. + * + *

    Does not propagate updated capabilities to apps. + * + * @param defaultNetwork underlying network for VPNs following platform's default + */ + public synchronized NetworkCapabilities updateCapabilities( + @Nullable Network defaultNetwork) { + if (mConfig == null) { + // VPN is not running. + return null; + } + + Network[] underlyingNetworks = mConfig.underlyingNetworks; + if (underlyingNetworks == null && defaultNetwork != null) { + // null underlying networks means to track the default. + underlyingNetworks = new Network[] { defaultNetwork }; + } + + applyUnderlyingCapabilities( + mContext.getSystemService(ConnectivityManager.class), + underlyingNetworks, mNetworkCapabilities); - if (mNetworkAgent != null) { - mNetworkAgent.sendNetworkCapabilities(mNetworkCapabilities); - } + return new NetworkCapabilities(mNetworkCapabilities); } @VisibleForTesting - public static void updateCapabilities(ConnectivityManager cm, Network[] underlyingNetworks, + public static void applyUnderlyingCapabilities( + ConnectivityManager cm, + Network[] underlyingNetworks, NetworkCapabilities caps) { int[] transportTypes = new int[] { NetworkCapabilities.TRANSPORT_VPN }; int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED; @@ -323,6 +344,7 @@ public class Vpn { boolean hadUnderlyingNetworks = false; if (null != underlyingNetworks) { for (Network underlying : underlyingNetworks) { + // TODO(b/124469351): Get capabilities directly from ConnectivityService instead. final NetworkCapabilities underlyingCaps = cm.getNetworkCapabilities(underlying); if (underlyingCaps == null) continue; hadUnderlyingNetworks = true; @@ -993,9 +1015,8 @@ public class Vpn { } /** - * Establish a VPN network and return the file descriptor of the VPN - * interface. This methods returns {@code null} if the application is - * revoked or not prepared. + * Establish a VPN network and return the file descriptor of the VPN interface. This methods + * returns {@code null} if the application is revoked or not prepared. * * @param config The parameters to configure the network. * @return The file descriptor of the VPN interface. @@ -1242,6 +1263,11 @@ public class Vpn { return ranges; } + /** + * Updates UID ranges for this VPN and also updates its internal capabilities. + * + *

    Should be called on primary ConnectivityService thread. + */ public void onUserAdded(int userHandle) { // If the user is restricted tie them to the parent user's VPN UserInfo user = UserManager.get(mContext).getUserInfo(userHandle); @@ -1252,8 +1278,9 @@ public class Vpn { try { addUserToRanges(existingRanges, userHandle, mConfig.allowedApplications, mConfig.disallowedApplications); + // ConnectivityService will call {@link #updateCapabilities} and apply + // those for VPN network. mNetworkCapabilities.setUids(existingRanges); - updateCapabilities(); } catch (Exception e) { Log.wtf(TAG, "Failed to add restricted user to owner", e); } @@ -1263,6 +1290,11 @@ public class Vpn { } } + /** + * Updates UID ranges for this VPN and also updates its capabilities. + * + *

    Should be called on primary ConnectivityService thread. + */ public void onUserRemoved(int userHandle) { // clean up if restricted UserInfo user = UserManager.get(mContext).getUserInfo(userHandle); @@ -1274,8 +1306,9 @@ public class Vpn { final List removedRanges = uidRangesForUser(userHandle, existingRanges); existingRanges.removeAll(removedRanges); + // ConnectivityService will call {@link #updateCapabilities} and + // apply those for VPN network. mNetworkCapabilities.setUids(existingRanges); - updateCapabilities(); } catch (Exception e) { Log.wtf(TAG, "Failed to remove restricted user to owner", e); } @@ -1483,6 +1516,12 @@ public class Vpn { return success; } + /** + * Updates underlying network set. + * + *

    Note: Does not updates capabilities. Call {@link #updateCapabilities} from + * ConnectivityService thread to get updated capabilities. + */ public synchronized boolean setUnderlyingNetworks(Network[] networks) { if (!isCallerEstablishedOwnerLocked()) { return false; @@ -1499,7 +1538,6 @@ public class Vpn { } } } - updateCapabilities(); return true; } diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 17ab29d747905..2fef560afdcdf 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -82,7 +82,6 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.net.DataUsageRequest; -import android.net.IConnectivityManager; import android.net.INetworkManagementEventObserver; import android.net.INetworkStatsService; import android.net.INetworkStatsSession; @@ -161,9 +160,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // Perform polling and persist all (FLAG_PERSIST_ALL). private static final int MSG_PERFORM_POLL = 1; - private static final int MSG_UPDATE_IFACES = 2; // Perform polling, persist network, and register the global alert again. - private static final int MSG_PERFORM_POLL_REGISTER_ALERT = 3; + private static final int MSG_PERFORM_POLL_REGISTER_ALERT = 2; /** Flags to control detail level of poll event. */ private static final int FLAG_PERSIST_NETWORK = 0x1; @@ -196,8 +194,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final boolean mUseBpfTrafficStats; - private IConnectivityManager mConnManager; - @VisibleForTesting public static final String ACTION_NETWORK_STATS_POLL = "com.android.server.action.NETWORK_STATS_POLL"; @@ -259,6 +255,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final ArrayMap mActiveUidIfaces = new ArrayMap<>(); /** Current default active iface. */ + @GuardedBy("mStatsLock") private String mActiveIface; /** Set of any ifaces associated with mobile networks since boot. */ @@ -269,6 +266,10 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @GuardedBy("mStatsLock") private Network[] mDefaultNetworks = new Network[0]; + /** Set containing info about active VPNs and their underlying networks. */ + @GuardedBy("mStatsLock") + private VpnInfo[] mVpnInfos = new VpnInfo[0]; + private final DropBoxNonMonotonicObserver mNonMonotonicObserver = new DropBoxNonMonotonicObserver(); @@ -371,10 +372,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mHandlerCallback = callback; } - public void bindConnectivityManager(IConnectivityManager connManager) { - mConnManager = checkNotNull(connManager, "missing IConnectivityManager"); - } - public void systemReady() { mSystemReady = true; @@ -853,13 +850,17 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } @Override - public void forceUpdateIfaces(Network[] defaultNetworks) { + public void forceUpdateIfaces( + Network[] defaultNetworks, + VpnInfo[] vpnArray, + NetworkState[] networkStates, + String activeIface) { mContext.enforceCallingOrSelfPermission(READ_NETWORK_USAGE_HISTORY, TAG); assertBandwidthControlEnabled(); final long token = Binder.clearCallingIdentity(); try { - updateIfaces(defaultNetworks); + updateIfaces(defaultNetworks, vpnArray, networkStates, activeIface); } finally { Binder.restoreCallingIdentity(token); } @@ -1077,11 +1078,17 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } }; - private void updateIfaces(Network[] defaultNetworks) { + private void updateIfaces( + Network[] defaultNetworks, + VpnInfo[] vpnArray, + NetworkState[] networkStates, + String activeIface) { synchronized (mStatsLock) { mWakeLock.acquire(); try { - updateIfacesLocked(defaultNetworks); + mVpnInfos = vpnArray; + mActiveIface = activeIface; + updateIfacesLocked(defaultNetworks, networkStates); } finally { mWakeLock.release(); } @@ -1095,7 +1102,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * {@link NetworkIdentitySet}. */ @GuardedBy("mStatsLock") - private void updateIfacesLocked(Network[] defaultNetworks) { + private void updateIfacesLocked(Network[] defaultNetworks, NetworkState[] states) { if (!mSystemReady) return; if (LOGV) Slog.v(TAG, "updateIfacesLocked()"); @@ -1107,18 +1114,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // will be persisted during next alarm poll event. performPollLocked(FLAG_PERSIST_NETWORK); - final NetworkState[] states; - final LinkProperties activeLink; - try { - states = mConnManager.getAllNetworkState(); - activeLink = mConnManager.getActiveLinkProperties(); - } catch (RemoteException e) { - // ignored; service lives in system_server - return; - } - - mActiveIface = activeLink != null ? activeLink.getInterfaceName() : null; - // Rebuild active interfaces based on connected networks mActiveIfaces.clear(); mActiveUidIfaces.clear(); @@ -1230,7 +1225,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { Trace.traceEnd(TRACE_TAG_NETWORK); // For per-UID stats, pass the VPN info so VPN traffic is reattributed to responsible apps. - VpnInfo[] vpnArray = mConnManager.getAllVpnInfo(); + VpnInfo[] vpnArray = mVpnInfos; Trace.traceBegin(TRACE_TAG_NETWORK, "recordUid"); mUidRecorder.recordSnapshotLocked(uidSnapshot, mActiveUidIfaces, vpnArray, currentTime); Trace.traceEnd(TRACE_TAG_NETWORK); @@ -1689,10 +1684,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mService.performPoll(FLAG_PERSIST_ALL); return true; } - case MSG_UPDATE_IFACES: { - mService.updateIfaces(null); - return true; - } case MSG_PERFORM_POLL_REGISTER_ALERT: { mService.performPoll(FLAG_PERSIST_NETWORK); mService.registerGlobalAlert(); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index ae971f45525e4..8613fcb5ddc07 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1190,7 +1190,6 @@ public final class SystemServer { ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity, /* allowIsolated= */ false, DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL); - networkStats.bindConnectivityManager(connectivity); networkPolicy.bindConnectivityManager(connectivity); } catch (Throwable e) { reportWtf("starting Connectivity Service", e); diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index c2c627d06e478..e6a889b1c27f6 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -20,6 +20,7 @@ import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; +import static android.net.ConnectivityManager.NETID_UNSET; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_MOBILE; import static android.net.ConnectivityManager.TYPE_MOBILE_FOTA; @@ -108,6 +109,7 @@ import android.net.NetworkInfo.DetailedState; import android.net.NetworkMisc; import android.net.NetworkRequest; import android.net.NetworkSpecifier; +import android.net.NetworkState; import android.net.NetworkUtils; import android.net.RouteInfo; import android.net.StringNetworkSpecifier; @@ -136,6 +138,7 @@ import android.util.ArraySet; import android.util.Log; import com.android.internal.net.VpnConfig; +import com.android.internal.net.VpnInfo; import com.android.internal.util.ArrayUtils; import com.android.internal.util.WakeupMessage; import com.android.internal.util.test.BroadcastInterceptingContext; @@ -775,11 +778,14 @@ public class ConnectivityServiceTest { public void setUids(Set uids) { mNetworkCapabilities.setUids(uids); - updateCapabilities(); + updateCapabilities(null /* defaultNetwork */); } @Override public int getNetId() { + if (mMockNetworkAgent == null) { + return NETID_UNSET; + } return mMockNetworkAgent.getNetwork().netId; } @@ -800,12 +806,13 @@ public class ConnectivityServiceTest { } @Override - public void updateCapabilities() { - if (!mConnected) return; - super.updateCapabilities(); - // Because super.updateCapabilities will update the capabilities of the agent but not - // the mock agent, the mock agent needs to know about them. + public NetworkCapabilities updateCapabilities(Network defaultNetwork) { + if (!mConnected) return null; + super.updateCapabilities(defaultNetwork); + // Because super.updateCapabilities will update the capabilities of the agent but + // not the mock agent, the mock agent needs to know about them. copyCapabilitiesToNetworkAgent(); + return new NetworkCapabilities(mNetworkCapabilities); } private void copyCapabilitiesToNetworkAgent() { @@ -3808,48 +3815,91 @@ public class ConnectivityServiceTest { mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR); mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI); - Network[] onlyCell = new Network[]{mCellNetworkAgent.getNetwork()}; - Network[] onlyWifi = new Network[]{mWiFiNetworkAgent.getNetwork()}; + Network[] onlyCell = new Network[] {mCellNetworkAgent.getNetwork()}; + Network[] onlyWifi = new Network[] {mWiFiNetworkAgent.getNetwork()}; + + LinkProperties cellLp = new LinkProperties(); + cellLp.setInterfaceName(MOBILE_IFNAME); + LinkProperties wifiLp = new LinkProperties(); + wifiLp.setInterfaceName(WIFI_IFNAME); // Simple connection should have updated ifaces mCellNetworkAgent.connect(false); + mCellNetworkAgent.sendLinkProperties(cellLp); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyCell); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); // Default network switch should update ifaces. mWiFiNetworkAgent.connect(false); + mWiFiNetworkAgent.sendLinkProperties(wifiLp); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyWifi); + assertEquals(wifiLp, mService.getActiveLinkProperties()); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyWifi), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(WIFI_IFNAME)); reset(mStatsService); // Disconnect should update ifaces. mWiFiNetworkAgent.disconnect(); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyCell); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); // Metered change should update ifaces mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyCell); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); mCellNetworkAgent.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyCell); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); // Captive portal change shouldn't update ifaces mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); waitForIdle(); - verify(mStatsService, never()).forceUpdateIfaces(onlyCell); + verify(mStatsService, never()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); // Roaming change should update ifaces mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); waitForIdle(); - verify(mStatsService, atLeastOnce()).forceUpdateIfaces(onlyCell); + verify(mStatsService, atLeastOnce()) + .forceUpdateIfaces( + eq(onlyCell), + eq(new VpnInfo[0]), + any(NetworkState[].class), + eq(MOBILE_IFNAME)); reset(mStatsService); } @@ -4218,6 +4268,7 @@ public class ConnectivityServiceTest { mMockVpn.setUids(ranges); vpnNetworkAgent.connect(false); mMockVpn.connect(); + mMockVpn.setUnderlyingNetworks(new Network[0]); genericNetworkCallback.expectAvailableCallbacksUnvalidated(vpnNetworkAgent); genericNotVpnNetworkCallback.assertNoCallback(); @@ -4250,6 +4301,7 @@ public class ConnectivityServiceTest { ranges.add(new UidRange(uid, uid)); mMockVpn.setUids(ranges); + vpnNetworkAgent.setUids(ranges); genericNetworkCallback.expectAvailableCallbacksValidated(vpnNetworkAgent); genericNotVpnNetworkCallback.assertNoCallback(); @@ -4283,12 +4335,11 @@ public class ConnectivityServiceTest { } @Test - public void testVpnWithAndWithoutInternet() { + public void testVpnWithoutInternet() { final int uid = Process.myUid(); final TestNetworkCallback defaultCallback = new TestNetworkCallback(); mCm.registerDefaultNetworkCallback(defaultCallback); - defaultCallback.assertNoCallback(); mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI); mWiFiNetworkAgent.connect(true); @@ -4310,11 +4361,30 @@ public class ConnectivityServiceTest { vpnNetworkAgent.disconnect(); defaultCallback.assertNoCallback(); - vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN); + mCm.unregisterNetworkCallback(defaultCallback); + } + + @Test + public void testVpnWithInternet() { + final int uid = Process.myUid(); + + final TestNetworkCallback defaultCallback = new TestNetworkCallback(); + mCm.registerDefaultNetworkCallback(defaultCallback); + + mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI); + mWiFiNetworkAgent.connect(true); + + defaultCallback.expectAvailableThenValidatedCallbacks(mWiFiNetworkAgent); + assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork()); + + MockNetworkAgent vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN); + final ArraySet ranges = new ArraySet<>(); + ranges.add(new UidRange(uid, uid)); mMockVpn.setNetworkAgent(vpnNetworkAgent); mMockVpn.setUids(ranges); vpnNetworkAgent.connect(true /* validated */, true /* hasInternet */); mMockVpn.connect(); + defaultCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent); assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork()); @@ -4322,14 +4392,6 @@ public class ConnectivityServiceTest { defaultCallback.expectCallback(CallbackState.LOST, vpnNetworkAgent); defaultCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); - vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN); - ranges.clear(); - mMockVpn.setNetworkAgent(vpnNetworkAgent); - mMockVpn.setUids(ranges); - vpnNetworkAgent.connect(false /* validated */, true /* hasInternet */); - mMockVpn.connect(); - defaultCallback.assertNoCallback(); - mCm.unregisterNetworkCallback(defaultCallback); } @@ -4430,4 +4492,68 @@ public class ConnectivityServiceTest { mMockVpn.disconnect(); } + + @Test + public void testNullUnderlyingNetworks() { + final int uid = Process.myUid(); + + final TestNetworkCallback vpnNetworkCallback = new TestNetworkCallback(); + final NetworkRequest vpnNetworkRequest = new NetworkRequest.Builder() + .removeCapability(NET_CAPABILITY_NOT_VPN) + .addTransportType(TRANSPORT_VPN) + .build(); + NetworkCapabilities nc; + mCm.registerNetworkCallback(vpnNetworkRequest, vpnNetworkCallback); + vpnNetworkCallback.assertNoCallback(); + + final MockNetworkAgent vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN); + final ArraySet ranges = new ArraySet<>(); + ranges.add(new UidRange(uid, uid)); + mMockVpn.setNetworkAgent(vpnNetworkAgent); + mMockVpn.connect(); + mMockVpn.setUids(ranges); + vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */); + + vpnNetworkCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent); + nc = mCm.getNetworkCapabilities(vpnNetworkAgent.getNetwork()); + assertTrue(nc.hasTransport(TRANSPORT_VPN)); + assertFalse(nc.hasTransport(TRANSPORT_CELLULAR)); + assertFalse(nc.hasTransport(TRANSPORT_WIFI)); + // By default, VPN is set to track default network (i.e. its underlying networks is null). + // In case of no default network, VPN is considered metered. + assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_METERED)); + + // Connect to Cell; Cell is the default network. + mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR); + mCellNetworkAgent.connect(true); + + vpnNetworkCallback.expectCapabilitiesLike((caps) -> caps.hasTransport(TRANSPORT_VPN) + && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI) + && !caps.hasCapability(NET_CAPABILITY_NOT_METERED), + vpnNetworkAgent); + + // Connect to WiFi; WiFi is the new default. + mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI); + mWiFiNetworkAgent.addCapability(NET_CAPABILITY_NOT_METERED); + mWiFiNetworkAgent.connect(true); + + vpnNetworkCallback.expectCapabilitiesLike((caps) -> caps.hasTransport(TRANSPORT_VPN) + && !caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI) + && caps.hasCapability(NET_CAPABILITY_NOT_METERED), + vpnNetworkAgent); + + // Disconnect Cell. The default network did not change, so there shouldn't be any changes in + // the capabilities. + mCellNetworkAgent.disconnect(); + + // Disconnect wifi too. Now we have no default network. + mWiFiNetworkAgent.disconnect(); + + vpnNetworkCallback.expectCapabilitiesLike((caps) -> caps.hasTransport(TRANSPORT_VPN) + && !caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI) + && !caps.hasCapability(NET_CAPABILITY_NOT_METERED), + vpnNetworkAgent); + + mMockVpn.disconnect(); + } } diff --git a/tests/net/java/com/android/server/connectivity/VpnTest.java b/tests/net/java/com/android/server/connectivity/VpnTest.java index e377a472530e2..a0a4ad1feb683 100644 --- a/tests/net/java/com/android/server/connectivity/VpnTest.java +++ b/tests/net/java/com/android/server/connectivity/VpnTest.java @@ -457,7 +457,8 @@ public class VpnTest { final NetworkCapabilities caps = new NetworkCapabilities(); - Vpn.updateCapabilities(mConnectivityManager, new Network[] { }, caps); + Vpn.applyUnderlyingCapabilities( + mConnectivityManager, new Network[] {}, caps); assertTrue(caps.hasTransport(TRANSPORT_VPN)); assertFalse(caps.hasTransport(TRANSPORT_CELLULAR)); assertFalse(caps.hasTransport(TRANSPORT_WIFI)); @@ -467,7 +468,8 @@ public class VpnTest { assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING)); assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED)); - Vpn.updateCapabilities(mConnectivityManager, new Network[] { mobile }, caps); + Vpn.applyUnderlyingCapabilities( + mConnectivityManager, new Network[] {mobile}, caps); assertTrue(caps.hasTransport(TRANSPORT_VPN)); assertTrue(caps.hasTransport(TRANSPORT_CELLULAR)); assertFalse(caps.hasTransport(TRANSPORT_WIFI)); @@ -477,7 +479,8 @@ public class VpnTest { assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING)); assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED)); - Vpn.updateCapabilities(mConnectivityManager, new Network[] { wifi }, caps); + Vpn.applyUnderlyingCapabilities( + mConnectivityManager, new Network[] {wifi}, caps); assertTrue(caps.hasTransport(TRANSPORT_VPN)); assertFalse(caps.hasTransport(TRANSPORT_CELLULAR)); assertTrue(caps.hasTransport(TRANSPORT_WIFI)); @@ -487,7 +490,8 @@ public class VpnTest { assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING)); assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED)); - Vpn.updateCapabilities(mConnectivityManager, new Network[] { mobile, wifi }, caps); + Vpn.applyUnderlyingCapabilities( + mConnectivityManager, new Network[] {mobile, wifi}, caps); assertTrue(caps.hasTransport(TRANSPORT_VPN)); assertTrue(caps.hasTransport(TRANSPORT_CELLULAR)); assertTrue(caps.hasTransport(TRANSPORT_WIFI)); diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java index e371abcb26451..7cf1dc460bea8 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java @@ -70,7 +70,6 @@ import android.app.usage.NetworkStatsManager; import android.content.Context; import android.content.Intent; import android.net.DataUsageRequest; -import android.net.IConnectivityManager; import android.net.INetworkManagementEventObserver; import android.net.INetworkStatsSession; import android.net.LinkProperties; @@ -163,7 +162,6 @@ public class NetworkStatsServiceTest { private @Mock INetworkManagementService mNetManager; private @Mock NetworkStatsSettings mSettings; - private @Mock IConnectivityManager mConnManager; private @Mock IBinder mBinder; private @Mock AlarmManager mAlarmManager; private HandlerThread mHandlerThread; @@ -205,7 +203,6 @@ public class NetworkStatsServiceTest { Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService); mHandler = new Handler(mHandlerThread.getLooper(), callback); mService.setHandler(mHandler, callback); - mService.bindConnectivityManager(mConnManager); mElapsedRealtime = 0L; @@ -237,7 +234,6 @@ public class NetworkStatsServiceTest { mNetManager = null; mSettings = null; - mConnManager = null; mSession.close(); mService = null; @@ -248,12 +244,12 @@ public class NetworkStatsServiceTest { // pretend that wifi network comes online; service should ask about full // network state, and poll any existing interfaces before updating. expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // verify service has empty history for wifi assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0); @@ -292,12 +288,12 @@ public class NetworkStatsServiceTest { // pretend that wifi network comes online; service should ask about full // network state, and poll any existing interfaces before updating. expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // verify service has empty history for wifi assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0); @@ -366,12 +362,12 @@ public class NetworkStatsServiceTest { // pretend that wifi network comes online; service should ask about full // network state, and poll any existing interfaces before updating. expectSettings(0L, HOUR_IN_MILLIS, WEEK_IN_MILLIS); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // modify some number on wifi, and trigger poll event @@ -408,12 +404,12 @@ public class NetworkStatsServiceTest { public void testUidStatsAcrossNetworks() throws Exception { // pretend first mobile network comes online expectDefaultSettings(); - expectNetworkState(buildMobile3gState(IMSI_1)); + NetworkState[] states = new NetworkState[] {buildMobile3gState(IMSI_1)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); // create some traffic on first network @@ -440,7 +436,7 @@ public class NetworkStatsServiceTest { // disappearing, to verify we don't count backwards. incrementCurrentTime(HOUR_IN_MILLIS); expectDefaultSettings(); - expectNetworkState(buildMobile3gState(IMSI_2)); + states = new NetworkState[] {buildMobile3gState(IMSI_2)}; expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1) .addIfaceValues(TEST_IFACE, 2048L, 16L, 512L, 4L)); expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3) @@ -449,7 +445,7 @@ public class NetworkStatsServiceTest { .addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 512L, 4L, 0L, 0L, 0L)); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); forcePollAndWaitForIdle(); @@ -484,12 +480,12 @@ public class NetworkStatsServiceTest { public void testUidRemovedIsMoved() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // create some traffic @@ -543,12 +539,12 @@ public class NetworkStatsServiceTest { public void testUid3g4gCombinedByTemplate() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildMobile3gState(IMSI_1)); + NetworkState[] states = new NetworkState[] {buildMobile3gState(IMSI_1)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); // create some traffic @@ -569,14 +565,14 @@ public class NetworkStatsServiceTest { // now switch over to 4g network incrementCurrentTime(HOUR_IN_MILLIS); expectDefaultSettings(); - expectNetworkState(buildMobile4gState(TEST_IFACE2)); + states = new NetworkState[] {buildMobile4gState(TEST_IFACE2)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1) .addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L) .addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); forcePollAndWaitForIdle(); @@ -601,12 +597,12 @@ public class NetworkStatsServiceTest { public void testSummaryForAllUid() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // create some traffic for two apps @@ -660,12 +656,12 @@ public class NetworkStatsServiceTest { public void testDetailedUidStats() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); NetworkStats.Entry entry1 = new NetworkStats.Entry( TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 0L); @@ -703,13 +699,13 @@ public class NetworkStatsServiceTest { stackedProp.setInterfaceName(stackedIface); final NetworkState wifiState = buildWifiState(); wifiState.linkProperties.addStackedLink(stackedProp); - expectNetworkState(wifiState); + NetworkState[] states = new NetworkState[] {wifiState}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); NetworkStats.Entry uidStats = new NetworkStats.Entry( TEST_IFACE, UID_BLUE, SET_DEFAULT, 0xF00D, 1024L, 8L, 512L, 4L, 0L); @@ -748,12 +744,12 @@ public class NetworkStatsServiceTest { public void testForegroundBackground() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // create some initial traffic @@ -806,12 +802,12 @@ public class NetworkStatsServiceTest { public void testMetered() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildWifiState(true /* isMetered */)); + NetworkState[] states = new NetworkState[] {buildWifiState(true /* isMetered */)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // create some initial traffic @@ -846,12 +842,13 @@ public class NetworkStatsServiceTest { public void testRoaming() throws Exception { // pretend that network comes online expectDefaultSettings(); - expectNetworkState(buildMobile3gState(IMSI_1, true /* isRoaming */)); + NetworkState[] states = + new NetworkState[] {buildMobile3gState(IMSI_1, true /* isRoaming */)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); // Create some traffic @@ -885,12 +882,12 @@ public class NetworkStatsServiceTest { public void testTethering() throws Exception { // pretend first mobile network comes online expectDefaultSettings(); - expectNetworkState(buildMobile3gState(IMSI_1)); + NetworkState[] states = new NetworkState[] {buildMobile3gState(IMSI_1)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_MOBILE); + mService.forceUpdateIfaces(NETWORKS_MOBILE, new VpnInfo[0], states, getActiveIface(states)); // create some tethering traffic @@ -928,12 +925,12 @@ public class NetworkStatsServiceTest { // pretend that wifi network comes online; service should ask about full // network state, and poll any existing interfaces before updating. expectDefaultSettings(); - expectNetworkState(buildWifiState()); + NetworkState[] states = new NetworkState[] {buildWifiState()}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); - mService.forceUpdateIfaces(NETWORKS_WIFI); + mService.forceUpdateIfaces(NETWORKS_WIFI, new VpnInfo[0], states, getActiveIface(states)); // verify service has empty history for wifi assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0); @@ -1081,11 +1078,11 @@ public class NetworkStatsServiceTest { expectBandwidthControlCheck(); } - private void expectNetworkState(NetworkState... state) throws Exception { - when(mConnManager.getAllNetworkState()).thenReturn(state); - - final LinkProperties linkProp = state.length > 0 ? state[0].linkProperties : null; - when(mConnManager.getActiveLinkProperties()).thenReturn(linkProp); + private String getActiveIface(NetworkState... states) throws Exception { + if (states == null || states.length == 0 || states[0].linkProperties == null) { + return null; + } + return states[0].linkProperties.getInterfaceName(); } private void expectNetworkStatsSummary(NetworkStats summary) throws Exception { @@ -1094,8 +1091,6 @@ public class NetworkStatsServiceTest { private void expectNetworkStatsSummary(NetworkStats summary, NetworkStats tetherStats) throws Exception { - when(mConnManager.getAllVpnInfo()).thenReturn(new VpnInfo[0]); - expectNetworkStatsTethering(STATS_PER_IFACE, tetherStats); expectNetworkStatsSummaryDev(summary.clone()); expectNetworkStatsSummaryXt(summary.clone());