summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/AppGlobals.java7
-rw-r--r--core/java/android/net/ConnectivityManager.java28
-rw-r--r--core/java/android/net/MobileDataStateTracker.java9
-rw-r--r--core/java/android/provider/Telephony.java8
-rw-r--r--core/java/android/webkit/ZoomManager.java2
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_copy_holo_dark.pngbin0 -> 479 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_copy_holo_light.pngbin0 -> 578 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_cut_holo_dark.pngbin0 -> 1006 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_cut_holo_light.pngbin0 -> 1493 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_find_holo_dark.pngbin0 -> 2015 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_find_holo_light.pngbin0 -> 2015 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_paste_holo_dark.pngbin0 -> 709 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_paste_holo_light.pngbin0 -> 945 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_search_holo_dark.pngbin0 -> 1800 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_share_holo_dark.pngbin0 -> 1823 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_share_holo_light.pngbin0 -> 1823 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_copy_holo_dark.pngbin0 -> 472 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_copy_holo_light.pngbin0 -> 542 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_cut_holo_dark.pngbin0 -> 727 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_cut_holo_light.pngbin0 -> 1006 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_find_holo_dark.pngbin0 -> 1331 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_find_holo_light.pngbin0 -> 1331 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_paste_holo_dark.pngbin0 -> 586 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_paste_holo_light.pngbin0 -> 726 bytes
-rwxr-xr-xcore/res/res/drawable-mdpi/ic_menu_search_holo_dark.pngbin0 -> 1133 bytes
-rwxr-xr-xcore/res/res/drawable-mdpi/ic_menu_share_holo_dark.pngbin0 -> 1154 bytes
-rwxr-xr-xcore/res/res/drawable-mdpi/ic_menu_share_holo_light.pngbin0 -> 1154 bytes
-rw-r--r--core/res/res/menu/webview_copy.xml6
-rw-r--r--core/res/res/values-ar/strings.xml8
-rw-r--r--core/res/res/values-bg/strings.xml8
-rw-r--r--core/res/res/values-ca/strings.xml8
-rw-r--r--core/res/res/values-cs/strings.xml8
-rw-r--r--core/res/res/values-da/strings.xml8
-rw-r--r--core/res/res/values-de/strings.xml112
-rw-r--r--core/res/res/values-el/strings.xml8
-rw-r--r--core/res/res/values-en-rGB/strings.xml10
-rw-r--r--core/res/res/values-es-rUS-xlarge/strings.xml337
-rw-r--r--core/res/res/values-es-rUS/strings.xml8
-rw-r--r--core/res/res/values-es/strings.xml10
-rw-r--r--core/res/res/values-fa/strings.xml8
-rw-r--r--core/res/res/values-fi/strings.xml8
-rw-r--r--core/res/res/values-fr/strings.xml98
-rw-r--r--core/res/res/values-hr/strings.xml8
-rw-r--r--core/res/res/values-hu/strings.xml8
-rw-r--r--core/res/res/values-in/strings.xml8
-rw-r--r--core/res/res/values-it/strings.xml8
-rw-r--r--core/res/res/values-iw/strings.xml8
-rw-r--r--core/res/res/values-ja/strings.xml8
-rw-r--r--core/res/res/values-ko/strings.xml8
-rw-r--r--core/res/res/values-lt/strings.xml8
-rw-r--r--core/res/res/values-lv/strings.xml8
-rw-r--r--core/res/res/values-nb/strings.xml8
-rw-r--r--core/res/res/values-nl/strings.xml8
-rw-r--r--core/res/res/values-pl/strings.xml8
-rw-r--r--core/res/res/values-pt-rPT/strings.xml8
-rw-r--r--core/res/res/values-pt/strings.xml8
-rw-r--r--core/res/res/values-rm/strings.xml8
-rw-r--r--core/res/res/values-ro/strings.xml8
-rw-r--r--core/res/res/values-ru/strings.xml8
-rw-r--r--core/res/res/values-sk/strings.xml8
-rw-r--r--core/res/res/values-sl/strings.xml8
-rw-r--r--core/res/res/values-sr/strings.xml8
-rw-r--r--core/res/res/values-sv/strings.xml8
-rw-r--r--core/res/res/values-th/strings.xml8
-rw-r--r--core/res/res/values-tl/strings.xml8
-rw-r--r--core/res/res/values-tr/strings.xml8
-rw-r--r--core/res/res/values-uk/strings.xml8
-rw-r--r--core/res/res/values-vi/strings.xml8
-rw-r--r--core/res/res/values-zh-rCN/strings.xml8
-rw-r--r--core/res/res/values-zh-rTW/strings.xml8
-rwxr-xr-xcore/res/res/values/attrs.xml6
-rw-r--r--core/res/res/values/config.xml8
-rw-r--r--core/res/res/values/styles.xml2
-rw-r--r--core/res/res/values/themes.xml20
-rw-r--r--core/tests/systemproperties/Android.mk18
-rw-r--r--core/tests/systemproperties/AndroidManifest.xml30
-rwxr-xr-xcore/tests/systemproperties/run_core_systemproperties_test.sh21
-rw-r--r--core/tests/systemproperties/src/android/os/SystemPropertiesTest.java57
-rw-r--r--docs/html/guide/topics/ui/themes.jd23
-rw-r--r--graphics/java/android/renderscript/RenderScript.java2
-rw-r--r--graphics/java/android/renderscript/RenderScriptGL.java2
-rw-r--r--libs/rs/Android.mk3
-rw-r--r--libs/rs/rsAllocation.cpp4
-rw-r--r--libs/rs/rsContext.cpp2
-rw-r--r--libs/rs/rsHandcode.h1
-rw-r--r--libs/rs/rsScript.cpp1
-rw-r--r--libs/rs/rsScriptC_Lib.cpp2
-rw-r--r--libs/rs/rsScriptC_LibCL.cpp2
-rw-r--r--libs/rs/rsScriptC_LibGL.cpp2
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4g.pngbin258 -> 0 bytes
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml3
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml3
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml3
-rw-r--r--packages/SystemUI/res/values-da/strings.xml3
-rw-r--r--packages/SystemUI/res/values-de/strings.xml5
-rw-r--r--packages/SystemUI/res/values-el/strings.xml3
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml3
-rw-r--r--packages/SystemUI/res/values-es-rUS-xlarge-land/strings.xml6
-rw-r--r--packages/SystemUI/res/values-es-rUS-xlarge-port/strings.xml6
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml3
-rw-r--r--packages/SystemUI/res/values-es/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml3
-rw-r--r--packages/SystemUI/res/values-in/strings.xml3
-rw-r--r--packages/SystemUI/res/values-it/strings.xml3
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml3
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml3
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml3
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml3
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml3
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml3
-rw-r--r--packages/SystemUI/res/values-rm/strings.xml2
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml3
-rw-r--r--packages/SystemUI/res/values-th/strings.xml3
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml3
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml3
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java13
-rw-r--r--services/java/com/android/server/ConnectivityService.java45
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java7
-rw-r--r--telephony/java/android/telephony/ServiceState.java10
-rw-r--r--telephony/java/com/android/internal/telephony/ApnContext.java164
-rw-r--r--telephony/java/com/android/internal/telephony/ApnSetting.java26
-rw-r--r--telephony/java/com/android/internal/telephony/BaseCommands.java41
-rw-r--r--telephony/java/com/android/internal/telephony/CallTracker.java4
-rw-r--r--telephony/java/com/android/internal/telephony/CommandsInterface.java63
-rw-r--r--telephony/java/com/android/internal/telephony/DataConnectionTracker.java103
-rw-r--r--telephony/java/com/android/internal/telephony/IccCard.java14
-rw-r--r--telephony/java/com/android/internal/telephony/IccCardApplication.java4
-rw-r--r--telephony/java/com/android/internal/telephony/IccConstants.java10
-rw-r--r--telephony/java/com/android/internal/telephony/Phone.java12
-rw-r--r--telephony/java/com/android/internal/telephony/PhoneBase.java32
-rw-r--r--telephony/java/com/android/internal/telephony/PhoneFactory.java33
-rw-r--r--telephony/java/com/android/internal/telephony/PhoneProxy.java4
-rw-r--r--telephony/java/com/android/internal/telephony/RIL.java15
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java12
-rwxr-xr-xtelephony/java/com/android/internal/telephony/SMSDispatcher.java29
-rw-r--r--telephony/java/com/android/internal/telephony/ServiceStateTracker.java43
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java180
-rwxr-xr-xtelephony/java/com/android/internal/telephony/cdma/CDMAPhone.java21
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java4
-rwxr-xr-xtelephony/java/com/android/internal/telephony/cdma/CdmaConnection.java2
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java66
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java567
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java8
-rwxr-xr-xtelephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java382
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GSMPhone.java17
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java66
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java1080
-rwxr-xr-xtelephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java8
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java40
-rwxr-xr-xtelephony/java/com/android/internal/telephony/gsm/SIMRecords.java29
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/SimCard.java17
-rw-r--r--telephony/tests/telephonytests/src/com/android/internal/telephony/ApnSettingTest.java10
-rw-r--r--wifi/java/android/net/wifi/WifiConfigStore.java19
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java1
174 files changed, 1325 insertions, 3162 deletions
diff --git a/core/java/android/app/AppGlobals.java b/core/java/android/app/AppGlobals.java
index 55515b8..2b6db8b 100644
--- a/core/java/android/app/AppGlobals.java
+++ b/core/java/android/app/AppGlobals.java
@@ -55,6 +55,11 @@ public class AppGlobals {
* @return The core settings.
*/
public static int getIntCoreSetting(String key, int defaultValue) {
- return ActivityThread.currentActivityThread().getIntCoreSetting(key, defaultValue);
+ ActivityThread currentActivityThread = ActivityThread.currentActivityThread();
+ if (currentActivityThread != null) {
+ return currentActivityThread.getIntCoreSetting(key, defaultValue);
+ } else {
+ return defaultValue;
+ }
}
}
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 26f375d..cab8ed2 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -221,32 +221,12 @@ public class ConnectivityManager
/** {@hide} */
public static final int TYPE_DUMMY = 8;
-
/** {@hide} */
public static final int TYPE_ETHERNET = 9;
- /**
- * Over the air Adminstration.
- * {@hide}
- */
- public static final int TYPE_MOBILE_FOTA = 10;
-
- /**
- * IP Multimedia Subsystem
- * {@hide}
- */
- public static final int TYPE_MOBILE_IMS = 11;
-
- /**
- * Carrier Branded Services
- * {@hide}
- */
- public static final int TYPE_MOBILE_CBS = 12;
-
- /** {@hide} */
- public static final int MAX_RADIO_TYPE = TYPE_MOBILE_CBS;
-
- /** {@hide} */
- public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_CBS;
+ /** {@hide} TODO: Need to adjust this for WiMAX. */
+ public static final int MAX_RADIO_TYPE = TYPE_DUMMY;
+ /** {@hide} TODO: Need to adjust this for WiMAX. */
+ public static final int MAX_NETWORK_TYPE = TYPE_DUMMY;
public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI;
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index 5b4da66..e04964e 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -437,8 +437,7 @@ public class MobileDataStateTracker implements NetworkStateTracker {
retValue = true;
break;
case Phone.APN_REQUEST_STARTED:
- // set IDLE here , avoid the following second FAILED not sent out
- mNetworkInfo.setDetailedState(DetailedState.IDLE, null, null);
+ // no need to do anything - we're already due some status update intents
retValue = true;
break;
case Phone.APN_REQUEST_FAILED:
@@ -547,12 +546,6 @@ public class MobileDataStateTracker implements NetworkStateTracker {
return Phone.APN_TYPE_DUN;
case ConnectivityManager.TYPE_MOBILE_HIPRI:
return Phone.APN_TYPE_HIPRI;
- case ConnectivityManager.TYPE_MOBILE_FOTA:
- return Phone.APN_TYPE_FOTA;
- case ConnectivityManager.TYPE_MOBILE_IMS:
- return Phone.APN_TYPE_IMS;
- case ConnectivityManager.TYPE_MOBILE_CBS:
- return Phone.APN_TYPE_CBS;
default:
sloge("Error mapping networkType " + netType + " to apnType.");
return null;
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index d2d2557..62f66b6 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -1723,14 +1723,6 @@ public final class Telephony {
public static final String TYPE = "type";
- public static final String INACTIVE_TIMER = "inactivetimer";
-
- // Only if enabled try Data Connection.
- public static final String ENABLED = "enabled";
-
- // Rules apply based on class.
- public static final String CLASS = "class";
-
/**
* The protocol to be used to connect to this APN.
*
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 28f64a9..f27ced8 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -169,7 +169,7 @@ class ZoomManager {
private int mInitialScrollY;
private long mZoomStart;
- private static final int ZOOM_ANIMATION_LENGTH = 500;
+ private static final int ZOOM_ANIMATION_LENGTH = 175;
// whether support multi-touch
private boolean mSupportMultiTouch;
diff --git a/core/res/res/drawable-hdpi/ic_menu_copy_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_copy_holo_dark.png
new file mode 100644
index 0000000..852f146
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_copy_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_copy_holo_light.png b/core/res/res/drawable-hdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 0000000..ad09b37
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_cut_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_cut_holo_dark.png
new file mode 100644
index 0000000..7716a94
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_cut_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_cut_holo_light.png b/core/res/res/drawable-hdpi/ic_menu_cut_holo_light.png
new file mode 100644
index 0000000..bea6db1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_cut_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_find_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_find_holo_dark.png
new file mode 100644
index 0000000..b888202
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_find_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_find_holo_light.png b/core/res/res/drawable-hdpi/ic_menu_find_holo_light.png
new file mode 100644
index 0000000..b888202
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_find_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_paste_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_paste_holo_dark.png
new file mode 100644
index 0000000..5579443
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_paste_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_paste_holo_light.png b/core/res/res/drawable-hdpi/ic_menu_paste_holo_light.png
new file mode 100644
index 0000000..6674914
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_paste_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_search_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_search_holo_dark.png
new file mode 100644
index 0000000..a7f9bbe
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_search_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_share_holo_dark.png b/core/res/res/drawable-hdpi/ic_menu_share_holo_dark.png
new file mode 100644
index 0000000..2837615
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_share_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_share_holo_light.png b/core/res/res/drawable-hdpi/ic_menu_share_holo_light.png
new file mode 100644
index 0000000..2837615
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_share_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_copy_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_copy_holo_dark.png
new file mode 100644
index 0000000..35c3318
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_copy_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_copy_holo_light.png b/core/res/res/drawable-mdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 0000000..3b179d8
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_cut_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_cut_holo_dark.png
new file mode 100644
index 0000000..dfe8b4a
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_cut_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_cut_holo_light.png b/core/res/res/drawable-mdpi/ic_menu_cut_holo_light.png
new file mode 100644
index 0000000..748dc9b
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_cut_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_find_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_find_holo_dark.png
new file mode 100644
index 0000000..82dcba7
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_find_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_find_holo_light.png b/core/res/res/drawable-mdpi/ic_menu_find_holo_light.png
new file mode 100644
index 0000000..82dcba7
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_find_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_paste_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_paste_holo_dark.png
new file mode 100644
index 0000000..caec299
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_paste_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_paste_holo_light.png b/core/res/res/drawable-mdpi/ic_menu_paste_holo_light.png
new file mode 100644
index 0000000..434f5d1
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_paste_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_search_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_search_holo_dark.png
new file mode 100755
index 0000000..5d3155e
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_search_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_share_holo_dark.png b/core/res/res/drawable-mdpi/ic_menu_share_holo_dark.png
new file mode 100755
index 0000000..d89ca5f
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_share_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_share_holo_light.png b/core/res/res/drawable-mdpi/ic_menu_share_holo_light.png
new file mode 100755
index 0000000..d89ca5f
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_menu_share_holo_light.png
Binary files differ
diff --git a/core/res/res/menu/webview_copy.xml b/core/res/res/menu/webview_copy.xml
index ecb82b3..31bcec5 100644
--- a/core/res/res/menu/webview_copy.xml
+++ b/core/res/res/menu/webview_copy.xml
@@ -25,17 +25,17 @@
android:showAsAction="ifRoom|withText"
/>
<item android:id="@+id/share"
- android:icon="@drawable/ic_menu_share"
+ android:icon="?android:attr/actionModeShareDrawable"
android:title="@string/share"
android:showAsAction="ifRoom|withText"
/>
<item android:id="@+id/find"
- android:icon="@drawable/ic_menu_find"
+ android:icon="?android:attr/actionModeFindDrawable"
android:title="@string/find"
android:showAsAction="ifRoom|withText"
/>
<item android:id="@+id/websearch"
- android:icon="@drawable/ic_menu_search"
+ android:icon="?android:attr/actionModeWebSearchDrawable"
android:title="@string/websearch"
android:showAsAction="ifRoom|withText"
/>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 6d1f1aa..e778340 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"للسماح للتطبيق بالتحكم في الهزاز."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"التحكم في الضوء الوامض"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"للسماح للتطبيق بالتحكم في الضوء الوامض."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"الدخول إلى أجهزة USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"للسماح للتطبيق بالدخول إلى أجهزة USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"تنفيذ بروتوكول MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"لإتاحة الدخول إلى برنامج تشغيل kernel MTP لتنفيذ بروتوكول MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"اختبار الأجهزة"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"الاستخدام بشكل افتراضي لهذا الإجراء."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"محو الإعداد الافتراضي في الإعدادات الرئيسية &gt; التطبيقات &gt; إدارة التطبيقات."</string>
<string name="chooseActivity" msgid="1009246475582238425">"تحديد إجراء"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"ليس هناك تطبيقات يمكنها تنفيذ هذا الإجراء."</string>
<string name="aerr_title" msgid="653922989522758100">"عذرًا!"</string>
<string name="aerr_application" msgid="4683614104336409186">"توقف التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> (العملية <xliff:g id="PROCESS">%2$s</xliff:g>) على نحو غير متوقع. الرجاء المحاولة مرة أخرى."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index ca36b5c..0e95bfb 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Разрешава на приложението да контролира устройството за вибрация."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контролиране на фенерчето"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Разрешава на приложението да контролира фенерчето."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"достъп до USB устройства"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Разрешава на приложението достъп до USB устройства."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"внедряване на MTP протокол"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Разрешава достъп до MTP драйвера на ядрото за внедряване на протокола MTP през USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"тест на хардуера"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Използване по подразбиране за това действие."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Изчистване на стандартната стойност в „Начални настройки“ &gt; „Приложения“ &gt; „Управление на приложенията“."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Избиране на действие"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Това действие не може да се изпълни от нито едно приложение."</string>
<string name="aerr_title" msgid="653922989522758100">"Съжаляваме!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Приложението „<xliff:g id="APPLICATION">%1$s</xliff:g>“ (процес „<xliff:g id="PROCESS">%2$s</xliff:g>“) спря неочаквано. Моля, опитайте отново."</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index d506c67..daf0e37 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permet a l\'aplicació controlar el vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar el flaix"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permet a l\'aplicació controlar el flaix."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"accedeix a dispositius USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permet que l\'aplicació accedeixi als dispositius USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementa el protocol MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permet l\'accés al programa de control MTP de kernel per implementar el protocol USB d\'MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"provar el maquinari"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utilitza-ho de manera predeterminada per a aquesta acció."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Esborra el valor predeterminat a Configuració de la pantalla d\'inici &gt; Aplicacions &gt; Gestiona les aplicacions."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Seleccioneu una acció"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"No hi ha cap aplicació que pugui dur a terme aquesta acció."</string>
<string name="aerr_title" msgid="653922989522758100">"Ho sentim."</string>
<string name="aerr_application" msgid="4683614104336409186">"L\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g> (procés <xliff:g id="PROCESS">%2$s</xliff:g>) s\'ha aturat inesperadament. Torneu-ho a provar."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index afc8a2e..58c7678 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Umožňuje aplikaci ovládat vibrace."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ovládání kontrolky"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Umožňuje aplikaci ovládat kontrolku."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"přístup k zařízením USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Umožní aplikaci přístup k zařízením USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementace protokolu MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Povoluje přístup k ovladači protokolu MTP jádra za účelem implementace protokolu MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testování hardwaru"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Použít jako výchozí nastavení pro tuto činnost."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Vymažte výchozí hodnoty v Nastavení plochy &gt; Aplikace &gt; Správa aplikací."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Vyberte akci"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Tuto činnost nemohou provádět žádné aplikace."</string>
<string name="aerr_title" msgid="653922989522758100">"Omlouváme se"</string>
<string name="aerr_application" msgid="4683614104336409186">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) byla neočekávaně ukončena. Zkuste to znovu."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 3e283fc..8dfc384 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Lader programmet kontrollere vibratoren."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontroller lommelygte"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Tillader, at programmet kontrollerer lommelygten."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"adgang til USB-enheder."</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Tillader, at programmet har adgang til USB-enheder."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementere MTP-protokol"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Tillader adgang til kerne-MTP-driveren for at implementere MTB USB-protokollen."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"test hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Brug som standard til denne handling."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Ryd standard i Startindstillinger &gt; Programmer &gt; Administrer programmer."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Vælg en handling"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Der er ingen programmer, der kan foretage denne handling."</string>
<string name="aerr_title" msgid="653922989522758100">"Beklager!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Programmet <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) er standset uventet. Prøv igen."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index ccee3d0..881bf13 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -49,7 +49,7 @@
<string name="needPuk" msgid="919668385956251611">"Ihre SIM-Karte ist mit einem PUK gesperrt. Geben Sie zum Entsperren den PUK-Code ein."</string>
<string name="needPuk2" msgid="4526033371987193070">"Geben Sie zum Entsperren der SIM-Karte den PUK2 ein."</string>
<string name="ClipMmi" msgid="6952821216480289285">"Anrufer-ID für eingehenden Anruf"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"Anrufer-ID für abgehenden Anruf"</string>
+ <string name="ClirMmi" msgid="7784673673446833091">"Anrufer-ID für ausgehenden Anruf"</string>
<string name="CfMmi" msgid="5123218989141573515">"Rufweiterleitung"</string>
<string name="CwMmi" msgid="9129678056795016867">"Anklopfen"</string>
<string name="BaMmi" msgid="455193067926770581">"Anrufsperre"</string>
@@ -153,14 +153,14 @@
<string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Flugmodus ist AUS."</string>
<string name="status_bar_notification_info_overflow" msgid="5833510281787786290">"100 +"</string>
<string name="safeMode" msgid="2788228061547930246">"Abgesicherter Modus"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android System"</string>
+ <string name="android_system_label" msgid="6577375335728551336">"Android-System"</string>
<string name="permgrouplab_costMoney" msgid="5429808217861460401">"Kostenpflichtige Dienste"</string>
<string name="permgroupdesc_costMoney" msgid="8193824940620517189">"Ermöglicht Anwendungen die Ausführung eventuell kostenpflichtiger Aktionen."</string>
<string name="permgrouplab_messages" msgid="7521249148445456662">"Ihre Nachrichten"</string>
<string name="permgroupdesc_messages" msgid="7045736972019211994">"Lesen und schreiben Sie Ihre SMS, E-Mails und anderen Nachrichten."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ihre persönlichen Informationen"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Tablets."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Telefons."</string>
+ <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Tablets"</string>
+ <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Telefons"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ihren Standort"</string>
<string name="permgroupdesc_location" msgid="2430258821648348660">"Ihren physischen Standort überwachen"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Netzwerkkommunikation"</string>
@@ -177,14 +177,14 @@
<string name="permgroupdesc_developmentTools" msgid="9056431193893809814">"Funktionen nur für Anwendungsentwickler vorgesehen."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Speicher"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Zugriff auf USB-Speicher"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Greift auf die SD-Karte zu."</string>
+ <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Zugriff auf SD-Karte"</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"Statusleiste deaktivieren oder ändern"</string>
<string name="permdesc_statusBar" msgid="1365473595331989732">"Ermöglicht der Anwendung, die Statusanzeige zu deaktivieren oder Systemsymbole hinzuzufügen oder zu entfernen."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"Statusleiste"</string>
<string name="permdesc_statusBarService" msgid="4097605867643520920">"Ermöglicht der Anwendung, zur Statusleiste zu werden."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"Statusleiste ein-/ausblenden"</string>
<string name="permdesc_expandStatusBar" msgid="7088604400110768665">"Ermöglicht der Anwendung, die Statusleiste ein- oder auszublenden."</string>
- <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"Abgehende Anrufe abfangen"</string>
+ <string name="permlab_processOutgoingCalls" msgid="1136262550878335980">"Ausgehende Anrufe abfangen"</string>
<string name="permdesc_processOutgoingCalls" msgid="2228988201852654461">"Ermöglicht einer Anwendung, abgehende Anrufe zu verarbeiten und die zu wählende Nummer zu ändern. Schädliche Anwendungen können so abgehende Anrufe eventuell überwachen, umleiten oder verhindern."</string>
<string name="permlab_receiveSms" msgid="2697628268086208535">"SMS empfangen"</string>
<string name="permdesc_receiveSms" msgid="6298292335965966117">"Ermöglicht der Anwendung, Kurzmitteilungen zu empfangen und zu verarbeiten. Schädliche Anwendungen können Ihre Nachrichten möglicherweise überwachen oder löschen, bevor sie angezeigt werden."</string>
@@ -241,7 +241,7 @@
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"nicht autorisierte Fenster anzeigen"</string>
<string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"Ermöglicht die Erstellung von Fenstern, die von der Benutzeroberfläche des internen Systems verwendet werden. Nicht für normale Anwendungen geeignet."</string>
<string name="permlab_systemAlertWindow" msgid="3372321942941168324">"Warnungen auf Systemebene anzeigen"</string>
- <string name="permdesc_systemAlertWindow" msgid="2884149573672821318">"Ermöglicht einer Anwendung, Fenster mit Systemwarnungen anzuzeigen. Schädliche Anwendungen können so das gesamte Display einnehmen."</string>
+ <string name="permdesc_systemAlertWindow" msgid="2884149573672821318">"Ermöglicht einer Anwendung, Fenster mit Systemwarnungen anzuzeigen. Schädliche Anwendungen können so die Kontrolle über das gesamte Display übernehmen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"Allgemeine Animationsgeschwindigkeit einstellen"</string>
<string name="permdesc_setAnimationScale" msgid="7181522138912391988">"Ermöglicht einer Anwendung, die allgemeine Animationsgeschwindigkeit (schnellere oder langsamere Animationen) jederzeit anzupassen."</string>
<string name="permlab_manageAppTokens" msgid="17124341698093865">"Anwendungs-Tokens verwalten"</string>
@@ -279,7 +279,7 @@
<string name="permdesc_clearAppCache" product="tablet" msgid="3097119797652477973">"Ermöglicht einer Anwendung, Tablet-Speicher durch das Löschen von Dateien im Cache-Verzeichnis der Anwendung freizugeben. Der Zugriff beschränkt sich in der Regel auf Systemprozesse."</string>
<string name="permdesc_clearAppCache" product="default" msgid="7740465694193671402">"Ermöglicht einer Anwendung, Telefonspeicher durch das Löschen von Dateien im Cache-Verzeichnis der Anwendung freizugeben. Der Zugriff beschränkt sich in der Regel auf Systemprozesse."</string>
<string name="permlab_movePackage" msgid="728454979946503926">"Anwendungsressourcen verschieben"</string>
- <string name="permdesc_movePackage" msgid="6323049291923925277">"Ermöglicht einer Anwendung, Anwendungsressourcen von interne auf externe Medien zu verschieben und umgekehrt."</string>
+ <string name="permdesc_movePackage" msgid="6323049291923925277">"Ermöglicht einer Anwendung, Anwendungsressourcen von internen auf externe Medien zu verschieben und umgekehrt."</string>
<string name="permlab_readLogs" msgid="6615778543198967614">"Lesen vertraulicher Protokolldaten"</string>
<string name="permdesc_readLogs" product="tablet" msgid="4077356893924755294">"Ermöglicht einer Anwendung, die verschiedenen Protokolldateien des Systems zu lesen. So können allgemeine Informationen zu den auf Ihrem Tablet durchgeführten Aktionen eingesehen werden. Diese können persönliche oder geheime Daten enthalten."</string>
<string name="permdesc_readLogs" product="default" msgid="8896449437464867766">"Ermöglicht einer Anwendung, die verschiedenen Protokolldateien des Systems zu lesen. So können allgemeine Informationen zu den auf Ihrem Telefon durchgeführten Aktionen eingesehen werden. Diese können persönliche oder geheime Daten enthalten."</string>
@@ -300,8 +300,8 @@
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7530977064379338199">"Ermöglicht einer Anwendung, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Tablet gestartet wird, und durch die ständige Aktivität der Anwendung wird die gesamte Leistung des Tablets beeinträchtigt."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="698336728415008796">"Ermöglicht einer Anwendung, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Telefon gestartet wird, und durch die ständige Aktivität der Anwendung wird die gesamte Leistung des Telefons beeinträchtigt."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"dauerhaften Broadcast senden"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="6322249605930062595">"Ermöglicht einer Anwendung, dauerhafte Broadcasts zu senden, die auch nach dem Ende des Broadcasts bestehen bleiben. Schädliche Anwendungen können das Tablet langsam oder instabil machen, da zu viel Speicherplatz belegt ist."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="1920045289234052219">"Ermöglicht einer Anwendung, dauerhafte Broadcasts zu senden, die auch nach dem Ende des Broadcasts bestehen bleiben. Schädliche Anwendungen können das Telefon langsam oder unstabil machen, da zuviel Speicherplatz belegt ist."</string>
+ <string name="permdesc_broadcastSticky" product="tablet" msgid="6322249605930062595">"Ermöglicht einer Anwendung, dauerhafte Broadcasts zu senden, die auch nach dem Ende des Broadcasts bestehen bleiben. Schädliche Anwendungen können das Tablet langsam oder instabil machen, da zu viel Speicherplatz belegt wird."</string>
+ <string name="permdesc_broadcastSticky" product="default" msgid="1920045289234052219">"Ermöglicht einer Anwendung, dauerhafte Broadcasts zu senden, die auch nach dem Ende des Broadcasts bestehen bleiben. Schädliche Anwendungen können das Telefon langsam oder unstabil machen, da zuviel Speicherplatz belegt wird."</string>
<string name="permlab_readContacts" msgid="6219652189510218240">"Kontaktdaten lesen"</string>
<string name="permdesc_readContacts" product="tablet" msgid="7596158687301157686">"Ermöglicht einer Anwendung, alle auf Ihrem Tablet gespeicherten Kontaktdaten (Adressen) zu lesen. Schädliche Anwendungen können so Ihre Daten an andere Personen senden."</string>
<string name="permdesc_readContacts" product="default" msgid="3371591512896545975">"Ermöglicht einer Anwendung, alle auf Ihrem Telefon gespeicherten Kontaktdaten (Adressen) zu lesen. Schädliche Anwendungen können so Ihre Daten an andere Personen senden."</string>
@@ -312,8 +312,8 @@
<string name="permdesc_readCalendar" product="tablet" msgid="5905870265734599678">"Ermöglicht einer Anwendung, alle auf Ihrem Tablet gespeicherten Kalenderereignisse zu lesen. Schädliche Anwendungen können so Ihre Kalenderereignisse an andere Personen senden."</string>
<string name="permdesc_readCalendar" product="default" msgid="5533029139652095734">"Ermöglicht einer Anwendung, alle auf Ihrem Telefon gespeicherten Kalenderereignisse zu lesen. Schädliche Anwendungen können so Ihre Kalenderereignisse an andere Personen senden."</string>
<string name="permlab_writeCalendar" msgid="3894879352594904361">"Kalendereinträge hinzufügen oder ändern und E-Mails an Gäste senden"</string>
- <string name="permdesc_writeCalendar" msgid="2988871373544154221">"Ermöglicht einer Anwendung, Einträge auf Ihrem Kalender hinzuzufügen oder zu ändern, die E-Mails an Gäste senden können. Schädliche Anwendungen können so Ihre Kalenderdaten löschen oder verändern oder E-Mails versenden."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"Falsche Standortquellen für Testzwecke"</string>
+ <string name="permdesc_writeCalendar" msgid="2988871373544154221">"Ermöglicht einer Anwendung, Einträge in Ihrem Kalender hinzuzufügen oder zu ändern, wodurch E-Mails an Gäste gesendet werden können. Schädliche Anwendungen können so Ihre Kalenderdaten löschen oder verändern oder E-Mails versenden."</string>
+ <string name="permlab_accessMockLocation" msgid="8688334974036823330">"Simulierte Standortquellen für Testzwecke"</string>
<string name="permdesc_accessMockLocation" msgid="7648286063459727252">"Erstellt falsche Standortquellen für Testzwecke. Schädliche Anwendungen können so den von den echten Standortquellen wie GPS oder Netzwerkanbieter zurückgegebenen Standort und/oder Status überschreiben."</string>
<string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"Auf zusätzliche Dienstanbieterbefehle für Standort zugreifen"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="1948144701382451721">"Zugriff auf zusätzliche Dienstanbieterbefehle für Standort. Schädliche Anwendungen könnten so die Funktionsweise von GPS oder anderen Standortquellen beeinträchtigen."</string>
@@ -324,7 +324,7 @@
<string name="permdesc_accessFineLocation" product="default" msgid="7411213317434337331">"Zugriff auf genaue Standortquellen wie GPS auf dem Telefon (falls verfügbar). Schädliche Anwendungen können damit bestimmen, so Sie sich befinden und so Ihren Akku zusätzlich belasten."</string>
<string name="permlab_accessCoarseLocation" msgid="4642255009181975828">"ungefährer (netzwerkbasierter) Standort"</string>
<string name="permdesc_accessCoarseLocation" product="tablet" msgid="3704633168985466045">"Greift auf Quellen mit ungefähren Standortbestimmungen wie die Datenbank des Mobilfunknetzes zu, um falls möglich den ungefähren Standort des Tablets zu bestimmen. Schädliche Anwendungen können damit herauszufinden, wo Sie sich ungefähr befinden."</string>
- <string name="permdesc_accessCoarseLocation" product="default" msgid="8235655958070862293">"Greift auf Quellen mit ungefähren Standortbestimmungen wie die Datenbank des Mobilfunknetzwerks zu, um falls möglich den ungefähren Standort des Telefons zu bestimmen. Schädliche Anwendungen können damit herauszufinden, wo Sie sich ungefähr befinden."</string>
+ <string name="permdesc_accessCoarseLocation" product="default" msgid="8235655958070862293">"Greift auf Quellen mit ungefähren Standortbestimmungen wie die Datenbank des Mobilfunknetzes zu, um falls möglich den ungefähren Standort des Tablets festzustellen. Schädliche Anwendungen können damit herausfinden, wo Sie sich ungefähr befinden"</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Auf SurfaceFlinger zugreifen"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="6805241830020733025">"Ermöglicht einer Anwendung, die systemnahen SurfaceFlinger-Funktionen zu verwenden."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Frame-Puffer lesen"</string>
@@ -336,7 +336,7 @@
<string name="permlab_camera" msgid="3616391919559751192">"Bilder und Videos aufnehmen"</string>
<string name="permdesc_camera" msgid="6004878235852154239">"Ermöglicht der Anwendung, Fotos und Videos mit der Kamera aufzunehmen. So kann die Anwendung jederzeit Bilder aus dem Sichtfeld der Kamera erfassen."</string>
<string name="permlab_brick" product="tablet" msgid="2961292205764488304">"Tablet dauerhaft deaktivieren"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"Telefon dauerhaft deaktivieren."</string>
+ <string name="permlab_brick" product="default" msgid="8337817093326370537">"Telefon dauerhaft deaktivieren"</string>
<string name="permdesc_brick" product="tablet" msgid="7379164636920817963">"Ermöglicht der Anwendung, das gesamte Tablet dauerhaft zu deaktivieren. Dies birgt hohe Risiken."</string>
<string name="permdesc_brick" product="default" msgid="5569526552607599221">"Ermöglicht der Anwendung, das gesamte Telefon dauerhaft zu deaktivieren. Dies birgt hohe Risiken."</string>
<string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"Tablet-Neustart erzwingen"</string>
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Ermöglicht der Anwendung, den Vibrationsalarm zu steuern."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"Lichtanzeige steuern"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Ermöglicht der Anwendung, die Lichtanzeige zu steuern."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"auf USB-Geräte zugreifen"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Ermöglicht der Anwendung den Zugriff auf USB-Geräte."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTP-Protokoll implementieren"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Erlaubt den Zugriff auf den Kernel-MTP-Treiber zur Implementierung des MTP-USB-Protokolls."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"Hardware testen"</string>
@@ -393,8 +395,8 @@
<string name="permdesc_devicePower" product="tablet" msgid="3853773100100451905">"Ermöglicht der Anwendung, das Tablet ein- oder auszuschalten."</string>
<string name="permdesc_devicePower" product="default" msgid="4577331933252444818">"Ermöglicht der Anwendung, das Telefon ein- oder auszuschalten."</string>
<string name="permlab_factoryTest" msgid="3715225492696416187">"In Werkstestmodus ausführen"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Tablet-Hardware zugegriffen werden kann. Nur verfügbar, wenn ein Tablet im Werkstestmodus ausgeführt wird."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Telefonhardware zugegriffen werden kann. Nur verfügbar, wenn ein Telefon im Werkstestmodus ausgeführt wird."</string>
+ <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Tablet-Hardware zugegriffen werden kann. Nur verfügbar, wenn ein Tablet im Herstellertestmodus ausgeführt wird."</string>
+ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Telefon-Hardware zugegriffen werden kann. Nur verfügbar, wenn ein Telefon im Herstellertestmodus ausgeführt wird."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"Hintergrund festlegen"</string>
<string name="permdesc_setWallpaper" msgid="6417041752170585837">"Ermöglicht der Anwendung, den System-Hintergrund festzulegen."</string>
<string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Größenhinweise für Hintergrund festlegen"</string>
@@ -443,7 +445,7 @@
<string name="permdesc_bluetooth" product="tablet" msgid="4191941825910543803">"Ermöglicht einer Anwendung, die Konfiguration des lokalen Bluetooth-Tablets einzusehen und Verbindungen mit Partnergeräten herzustellen und zu akzeptieren."</string>
<string name="permdesc_bluetooth" product="default" msgid="762515380679392945">"Ermöglicht einer Anwendung, die Konfiguration des lokalen Bluetooth-Telefons einzusehen und Verbindungen mit Partnergeräten herzustellen und zu akzeptieren."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"Nahfeldkommunikation steuern"</string>
- <string name="permdesc_nfc" msgid="9171401851954407226">"Ermöglicht einer Anwendung die Kommunikation mit Tags für die Nahfeldkommunikation, Karten und Readern."</string>
+ <string name="permdesc_nfc" msgid="9171401851954407226">"Ermöglicht einer Anwendung die Kommunikation mit Tags für Nahfeldkommunikation, Karten und Lesegeräte"</string>
<string name="permlab_disableKeyguard" msgid="4977406164311535092">"Tastensperre deaktivieren"</string>
<string name="permdesc_disableKeyguard" msgid="3189763479326302017">"Ermöglicht einer Anwendung, die Tastensperre sowie den damit verbundenen Passwortschutz zu deaktivieren. So wird die Tastensperre vom Telefon deaktiviert, wenn ein Anruf eingeht, und nach Beendigung des Anrufs wieder aktiviert."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"Synchronisierungseinstellungen lesen"</string>
@@ -460,7 +462,7 @@
<string name="permdesc_readDictionary" msgid="1082972603576360690">"Ermöglicht einer Anwendung, alle privaten Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat."</string>
<string name="permlab_writeDictionary" msgid="6703109511836343341">"in nutzerdefiniertes Wörterbuch schreiben"</string>
<string name="permdesc_writeDictionary" msgid="2241256206524082880">"Ermöglicht einer Anwendung, Ihrem Wörterbuch neue Einträge hinzuzufügen."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-Speicherinh. ändern/lösch."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-Speicherinhalt ändern/löschen"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD-Karten-Inhalt ändern/löschen"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Ermöglicht der Anwendung Schreiben in USB-Speicher"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="6643963204976471878">"Ermöglicht einer Anwendung, auf die SD-Karte zu schreiben"</string>
@@ -478,12 +480,12 @@
<string name="policylab_resetPassword" msgid="2620077191242688955">"Passwort zum Entsperren des Displays ändern"</string>
<string name="policydesc_resetPassword" msgid="5391240616981297361">"Passwort zum Entsperren des Displays ändern"</string>
<string name="policylab_forceLock" msgid="2274085384704248431">"Display sperren"</string>
- <string name="policydesc_forceLock" msgid="5696964126226028442">"Steuern Sie, wie und wann das Display gesperrt wird."</string>
+ <string name="policydesc_forceLock" msgid="5696964126226028442">"Festlegen, wie und wann das Display gesperrt wird"</string>
<string name="policylab_wipeData" msgid="3910545446758639713">"Alle Daten löschen"</string>
<string name="policydesc_wipeData" product="tablet" msgid="314455232799486222">"Auf Werkseinstellungen zurücksetzen und Daten auf dem Tablet ohne Warnung löschen"</string>
<string name="policydesc_wipeData" product="default" msgid="7669895333814222586">"Auf Werkseinstellungen zurücksetzen und Daten auf dem Telefon ohne Warnung löschen"</string>
<string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Den globalen Proxy des Geräts festlegen"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Den globalen Proxy des Geräts zur Verwendung während der Aktivierung der Richtlinie festlegen. Nur der erste Geräteadministrator kann den gültigen globalen Proxy festlegen."</string>
+ <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Den bei aktivierter Richtlinie zu verwendenden globalen Proxy des Geräts festlegen. Nur der erste Geräteadministrator kann den gültigen globalen Proxy festlegen."</string>
<!-- outdated translation 4740941403188940274 --> <string name="policylab_expirePassword" msgid="885279151847254056">"Ablauf des Passworts festlegen"</string>
<!-- outdated translation 6626724939177185949 --> <string name="policydesc_expirePassword" msgid="4844430354224822074">"Zeitraum bis zur Änderung des Passworts für die Bildschirmsperre festlegen"</string>
<string name="policylab_encryptedStorage" msgid="8901326199909132915">"Speicherverschlüsselung"</string>
@@ -495,19 +497,19 @@
<item msgid="1103601433382158155">"Fax (geschäftl.)"</item>
<item msgid="1735177144948329370">"Fax (privat)"</item>
<item msgid="603878674477207394">"Pager"</item>
- <item msgid="1650824275177931637">"Sonstige"</item>
+ <item msgid="1650824275177931637">"Andere"</item>
<item msgid="9192514806975898961">"Benutzerdefiniert"</item>
</string-array>
<string-array name="emailAddressTypes">
<item msgid="8073994352956129127">"Privat"</item>
<item msgid="7084237356602625604">"Geschäftlich"</item>
- <item msgid="1112044410659011023">"Sonstige"</item>
+ <item msgid="1112044410659011023">"Andere"</item>
<item msgid="2374913952870110618">"Benutzerdefiniert"</item>
</string-array>
<string-array name="postalAddressTypes">
<item msgid="6880257626740047286">"Privat"</item>
<item msgid="5629153956045109251">"Geschäftlich"</item>
- <item msgid="4966604264500343469">"Sonstige"</item>
+ <item msgid="4966604264500343469">"Andere"</item>
<item msgid="4932682847595299369">"Benutzerdefiniert"</item>
</string-array>
<string-array name="imAddressTypes">
@@ -518,7 +520,7 @@
</string-array>
<string-array name="organizationTypes">
<item msgid="7546335612189115615">"Geschäftlich"</item>
- <item msgid="4378074129049520373">"Sonstige"</item>
+ <item msgid="4378074129049520373">"Andere"</item>
<item msgid="3455047468583965104">"Benutzerdefiniert"</item>
</string-array>
<string-array name="imProtocols">
@@ -593,10 +595,10 @@
<string name="relationTypeMother" msgid="4578571352962758304">"Mutter"</string>
<string name="relationTypeParent" msgid="4755635567562925226">"Elternteil"</string>
<string name="relationTypePartner" msgid="7266490285120262781">"Partner"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"Weitergeleitet von"</string>
+ <string name="relationTypeReferredBy" msgid="101573059844135524">"Empfehlung von"</string>
<string name="relationTypeRelative" msgid="1799819930085610271">"Verwandter"</string>
<string name="relationTypeSister" msgid="1735983554479076481">"Schwester"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"Gatte/Gattin"</string>
+ <string name="relationTypeSpouse" msgid="394136939428698117">"Ehepartner"</string>
<string name="sipAddressTypeCustom" msgid="2473580593111590945">"Benutzerdefiniert"</string>
<string name="sipAddressTypeHome" msgid="6093598181069359295">"Privat"</string>
<string name="sipAddressTypeWork" msgid="6920725730797099047">"Geschäftlich"</string>
@@ -609,7 +611,7 @@
<string name="keyguard_label_text" msgid="861796461028298424">"Drücken Sie zum Entsperren die Menütaste und dann auf \"0\"."</string>
<string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Notrufnummer"</string>
<string name="lockscreen_carrier_default" msgid="8812714795156374435">"(kein Dienst)"</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Display gesperrt."</string>
+ <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Display gesperrt"</string>
<string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Drücken Sie die Menütaste, um das Telefon zu entsperren oder einen Notruf zu tätigen."</string>
<string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Zum Entsperren die Menütaste drücken"</string>
<string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Muster zum Entsperren zeichnen"</string>
@@ -628,7 +630,7 @@
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Bitte legen Sie eine SIM-Karte ein."</string>
<string name="emergency_calls_only" msgid="6733978304386365407">"Nur Notrufe"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Netzwerk gesperrt"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-Karte ist gesperrt. PUK-Eingabe erforderlich."</string>
+ <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"PUK-Sperre auf SIM"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Weitere Informationen finden Sie in der Bedienungsanleitung oder wenden Sie sich an den Kundendienst."</string>
<string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"Bitte PIN-Code eingeben"</string>
<string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM-Karte wird entsperrt..."</string>
@@ -691,7 +693,7 @@
<string name="menu_space_shortcut_label" msgid="2410328639272162537">"Leerzeichen"</string>
<string name="menu_enter_shortcut_label" msgid="2743362785111309668">"Enter"</string>
<string name="menu_delete_shortcut_label" msgid="3658178007202748164">"löschen"</string>
- <string name="search_go" msgid="8298016669822141719">"Suche"</string>
+ <string name="search_go" msgid="8298016669822141719">"Suchen"</string>
<string name="oneMonthDurationPast" msgid="7396384508953779925">"Vor 1 Monat"</string>
<string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Vor mehr als 1 Monat"</string>
<plurals name="num_seconds_ago">
@@ -801,7 +803,7 @@
<string name="editTextMenuTitle" msgid="4909135564941815494">"Textaktionen"</string>
<string name="low_internal_storage_view_title" msgid="1399732408701697546">"Geringer Speicher"</string>
<string name="low_internal_storage_view_text" product="tablet" msgid="4231085657068852042">"Kaum noch Tablet-Speicher frei"</string>
- <string name="low_internal_storage_view_text" product="default" msgid="635106544616378836">"Kaum noch Telefonspeicher frei."</string>
+ <string name="low_internal_storage_view_text" product="default" msgid="635106544616378836">"Kaum noch Telefonspeicher frei"</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Abbrechen"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -811,9 +813,11 @@
<string name="capital_on" msgid="1544682755514494298">"EIN"</string>
<string name="capital_off" msgid="6815870386972805832">"Aus"</string>
<string name="whichApplication" msgid="4533185947064773386">"Aktion durchführen mit"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Standardmäßig für diese Aktion verwenden."</string>
- <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Standardeinstellung zurücksetzen unter \"Einstellungen &gt; Anwendungen &gt; Anwendungen verwalten\"."</string>
+ <string name="alwaysUse" msgid="4583018368000610438">"Standardmäßig für diese Aktion verwenden"</string>
+ <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Standardeinstellung zurücksetzen unter \"Einstellungen &gt; Anwendungen &gt; Anwendungen verwalten\""</string>
<string name="chooseActivity" msgid="1009246475582238425">"Aktion auswählen"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Diese Aktion kann von keiner Anwendung ausgeführt werden."</string>
<string name="aerr_title" msgid="653922989522758100">"Tut uns leid!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Die Anwendung <xliff:g id="APPLICATION">%1$s</xliff:g> (Prozess <xliff:g id="PROCESS">%2$s</xliff:g>) wurde unerwartet beendet. Versuchen Sie es erneut."</string>
@@ -832,13 +836,13 @@
<string name="smv_application" msgid="295583804361236288">"Die Anwendung <xliff:g id="APPLICATION">%1$s</xliff:g> (Prozess <xliff:g id="PROCESS">%2$s</xliff:g>) hat gegen ihre selbsterzwungene StrictMode-Richtlinie verstoßen."</string>
<string name="smv_process" msgid="5120397012047462446">"Der Prozess <xliff:g id="PROCESS">%1$s</xliff:g> hat gegen seine selbsterzwungene StrictMode-Richtlinie verstoßen."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string>
- <string name="heavy_weight_notification_detail" msgid="2423977499339403402">"Auswählen zum Wechseln in die Anwendung"</string>
+ <string name="heavy_weight_notification_detail" msgid="2423977499339403402">"Zum Wechseln in die Anwendung auswählen"</string>
<string name="heavy_weight_switcher_title" msgid="1135403633766694316">"Anwendung wechseln?"</string>
<string name="heavy_weight_switcher_text" msgid="4592075610079319667">"Es läuft gerade eine andere Anwendung, die vor dem Start einer neuen beendet werden muss."</string>
<string name="old_app_action" msgid="493129172238566282">"Zu <xliff:g id="OLD_APP">%1$s</xliff:g> zurückkehren"</string>
- <string name="old_app_description" msgid="942967900237208466">"Die neue Anwendung nicht starten."</string>
+ <string name="old_app_description" msgid="942967900237208466">"Die neue Anwendung nicht starten"</string>
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> starten"</string>
- <string name="new_app_description" msgid="6830398339826789493">"Anwendung beenden, ohne zu speichern."</string>
+ <string name="new_app_description" msgid="6830398339826789493">"Anwendung beenden, ohne zu speichern"</string>
<string name="sendText" msgid="5132506121645618310">"Aktion für Text auswählen"</string>
<string name="volume_ringtone" msgid="6885421406845734650">"Klingeltonlautstärke"</string>
<string name="volume_music" msgid="5421651157138628171">"Medienlautstärke"</string>
@@ -885,14 +889,14 @@
<string name="usb_storage_notification_title" msgid="8175892554757216525">"USB-Verbindung"</string>
<string name="usb_storage_notification_message" msgid="7380082404288219341">"Zum Kopieren von Dateien zum/vom Computer"</string>
<string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB-Speicher deaktivieren"</string>
- <string name="usb_storage_stop_notification_message" msgid="2591813490269841539">"Auswählen, um USB-Speicher zu deaktivieren."</string>
+ <string name="usb_storage_stop_notification_message" msgid="2591813490269841539">"USB-Speicher deaktivieren: auswählen"</string>
<string name="usb_storage_stop_title" msgid="660129851708775853">"USB-Speicher in Verwendung"</string>
<string name="usb_storage_stop_message" product="nosdcard" msgid="1368842269463745067">"Stellen Sie vor dem Deaktivieren des USB-Speichers sicher, dass Sie den Android-USB-Speicher von Ihrem Computer getrennt (\"ausgeworfen\") haben."</string>
- <string name="usb_storage_stop_message" product="default" msgid="3613713396426604104">"Stellen Sie vor dem Deaktivieren des USB-Speichers sicher, dass Sie Ihre Android-SD-Karte von Ihrem Computer getrennt (\"ausgeworfen\") haben."</string>
+ <string name="usb_storage_stop_message" product="default" msgid="3613713396426604104">"Achten Sie vor dem Deaktivieren des USB-Speichers darauf, dass Sie die Android-SD-Karte von Ihrem Computer getrennt (\"ausgeworfen\") haben."</string>
<string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB-Speicher deaktivieren"</string>
<string name="usb_storage_stop_error_message" msgid="143881914840412108">"Beim Deaktivieren des USB-Speichers ist ein Problem aufgetreten. Überprüfen Sie, ob Sie den USB-Host getrennt haben, und versuchen Sie es erneut."</string>
<string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB-Speicher aktivieren"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="3202838234780505886">"Wenn Sie den USB-Speicher aktivieren, werden einige von Ihnen verwendeten Anwendungen angehalten und sind möglicherweise nicht verfügbar, bis Sie den USB-Speicher wieder deaktivieren."</string>
+ <string name="dlg_confirm_kill_storage_users_text" msgid="3202838234780505886">"Wenn Sie den USB-Speicher aktivieren, werden einige von Ihnen verwendete Anwendungen angehalten und sind möglicherweise nicht verfügbar, bis Sie den USB-Speicher wieder deaktivieren."</string>
<string name="dlg_error_title" msgid="8048999973837339174">"USB-Vorgang fehlgeschlagen"</string>
<string name="dlg_ok" msgid="7376953167039865701">"OK"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB-Sp. formatieren"</string>
@@ -901,40 +905,40 @@
<string name="extmedia_format_message" product="default" msgid="3621369962433523619">"Möchten Sie die SD-Karte wirklich formatieren? Alle Daten auf Ihrer Karte gehen dann verloren."</string>
<string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-Debugging verbunden"</string>
- <string name="adb_active_notification_message" msgid="8470296818270110396">"Auswählen, um USB-Debugging zu deaktivieren."</string>
+ <string name="adb_active_notification_message" msgid="8470296818270110396">"USB-Debugging deaktivieren: auswählen"</string>
<string name="select_input_method" msgid="6865512749462072765">"Eingabemethode auswählen"</string>
<string name="configure_input_methods" msgid="6324843080254191535">"Eingabemethoden konfigurieren"</string>
<string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="candidates_style" msgid="4333913089637062257"><u>"Kandidaten"</u></string>
<string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB-Speicher wird vorbereitet."</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD-Karte wird vorbereitet"</string>
+ <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD-Karte wird vorbereitet..."</string>
<string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Suche nach Fehlern"</string>
<string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"USB-Speicher leer"</string>
<string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"SD-Karte leer"</string>
<string name="ext_media_nofs_notification_message" product="nosdcard" msgid="8623130522556087311">"USB-Speicher ist leer oder verfügt über ein nicht unterstütztes Dateisystem."</string>
<string name="ext_media_nofs_notification_message" product="default" msgid="3817704088027829380">"SD-Karte ist leer oder verfügt über ein nicht unterstütztes Dateisystem."</string>
<string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"USB-Speicher beschädigt"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Beschädigte SD-Karte"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="529021299294450667">"USB-Speicher ist beschädigt. Sie müssen ihn neu formatieren."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="6902531775948238989">"Die SD-Karte ist beschädigt. Sie müssen Ihre Karte eventuell neu formatieren."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB-Speicher unerw. entfernt"</string>
+ <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"SD-Karte beschädigt"</string>
+ <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="529021299294450667">"Der USB-Speicher ist beschädigt. Sie müssen ihn eventuell neu formatieren."</string>
+ <string name="ext_media_unmountable_notification_message" product="default" msgid="6902531775948238989">"Die SD-Karte ist beschädigt. Sie müssen sie eventuell neu formatieren."</string>
+ <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB-Speicher unerwartet entfernt"</string>
<string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD-Karte unerwartet entfernt"</string>
<string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Trennen Sie den USB-Speicher vor dem Entfernen, um Datenverlust zu vermeiden."</string>
<string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"SD-Karte vor dem Entnehmen trennen, um Datenverlust zu vermeiden."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB-Speicher kann entf. werden"</string>
+ <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB-Speicher kann entfernt werden."</string>
<string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD-Karte kann entfernt werden."</string>
<string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Der USB-Speicher kann entfernt werden."</string>
<string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Die SD-Karte kann entfernt werden."</string>
<string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB-Speicher entfernt"</string>
<string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD-Karte entfernt"</string>
<string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB-Speicher entfernt. Neuen Datenträger einlegen"</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD-Karte entfernt. Legen Sie eine neue ein."</string>
+ <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD-Karte entfernt. Neue Karte einlegen"</string>
<string name="activity_list_empty" msgid="4168820609403385789">"Keine passenden Aktivitäten gefunden"</string>
<string name="permlab_pkgUsageStats" msgid="8787352074326748892">"Nutzungsstatistik der Komponente aktualisieren"</string>
<string name="permdesc_pkgUsageStats" msgid="891553695716752835">"Ermöglicht die Änderung von gesammelten Nutzungsstatistiken der Komponente. Nicht für normale Anwendungen vorgesehen."</string>
- <string name="permlab_copyProtectedData" msgid="1660908117394854464">"Ermöglicht das Aufrufen des Standard-Containerdienstes zum Kopieren von Inhalt. Keine Verwendung bei normalen Anwendungen."</string>
- <string name="permdesc_copyProtectedData" msgid="537780957633976401">"Ermöglicht das Aufrufen des Standard-Containerdienstes zum Kopieren von Inhalt. Keine Verwendung bei normalen Anwendungen."</string>
+ <string name="permlab_copyProtectedData" msgid="1660908117394854464">"Ermöglicht das Aufrufen des Standard-Containerdienstes zum Kopieren von Inhalt. Nicht zum Gebrauch mit normalen Anwendungen."</string>
+ <string name="permdesc_copyProtectedData" msgid="537780957633976401">"Ermöglicht das Aufrufen des Standard-Containerdienstes zum Kopieren von Inhalt. Nicht zum Gebrauch mit normalen Anwendungen."</string>
<string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Für Zoomeinstellung zweimal berühren"</string>
<string name="gadget_host_error_inflating" msgid="2613287218853846830">"Fehler beim Vergrößern des Widgets"</string>
<string name="ime_action_go" msgid="8320845651737369027">"Los"</string>
@@ -963,7 +967,7 @@
<string name="pptp_vpn_description" msgid="2688045385181439401">"Point-to-Point-Tunneling-Protokoll"</string>
<string name="l2tp_vpn_description" msgid="3750692169378923304">"Layer-2-Tunneling-Protokoll"</string>
<string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec-VPN mit vorinstalliertem Schlüssel"</string>
- <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Zertifikat mit vorinstalliertem Schlüssel"</string>
+ <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"L2TP/IPSec-VPN mit Zertifikat"</string>
<string name="upload_file" msgid="2897957172366730416">"Datei auswählen"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Keine Datei ausgewählt"</string>
<string name="reset" msgid="2448168080964209908">"Zurücksetzen"</string>
@@ -976,9 +980,9 @@
<string name="next_button_label" msgid="1080555104677992408">"Weiter"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Überspringen"</string>
<string name="throttle_warning_notification_title" msgid="4890894267454867276">"Hohe Mobildatennutzung"</string>
- <string name="throttle_warning_notification_message" msgid="2609734763845705708">"Weitere Informationen über die Mobildatennutzung durch Berühren aufrufen"</string>
+ <string name="throttle_warning_notification_message" msgid="2609734763845705708">"Durch Berühren weitere Informationen zur Mobildatennutzung aufrufen"</string>
<string name="throttled_notification_title" msgid="6269541897729781332">"Mobildatenlimit überschritten"</string>
- <string name="throttled_notification_message" msgid="4712369856601275146">"Weitere Informationen über die Mobildatennutzung durch Berühren aufrufen"</string>
+ <string name="throttled_notification_message" msgid="4712369856601275146">"Durch Berühren weitere Informationen zur Mobildatennutzung aufrufen"</string>
<string name="no_matches" msgid="8129421908915840737">"Keine Treffer"</string>
<string name="find_on_page" msgid="1946799233822820384">"Auf Seite suchen"</string>
<plurals name="matches_found">
@@ -999,7 +1003,7 @@
<string name="media_shared" product="nosdcard" msgid="5830814349250834225">"Der USB-Speicher wird derzeit von einem Computer verwendet."</string>
<string name="media_shared" product="default" msgid="5706130568133540435">"Die SD-Karte wird derzeit von einem Computer verwendet."</string>
<string name="media_unknown_state" msgid="729192782197290385">"Unbekannter Status des externen Speichermediums"</string>
- <string name="share" msgid="1778686618230011964">"Freigeben"</string>
+ <string name="share" msgid="1778686618230011964">"Weitergeben"</string>
<string name="find" msgid="4808270900322985960">"Suchen"</string>
<string name="websearch" msgid="4337157977400211589">"Websuche"</string>
<string name="gpsNotifTicker" msgid="5622683912616496172">"Standortabfrage von <xliff:g id="NAME">%s</xliff:g>"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index edcb213..ccd1c4c 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Επιτρέπει στην εφαρμογή τον έλεγχο του δονητή."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"έλεγχος φακού"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Επιτρέπει στην εφαρμογή τον έλεγχο του φακού."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"πρόσβαση σε συσκευές USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Επιτρέπει στην εφαρμογή την πρόσβαση σε συσκευές USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"εφαρμογή πρωτοκόλλου MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Επιτρέπει την πρόσβαση στο πρόγραμμα οδήγησης kernel MTP για την εφαρμογή του πρωτοκόλλου MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"δοκιμή υλικού"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Χρήση από προεπιλογή για αυτήν την ενέργεια."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Εκκαθάριση προεπιλεγμένων σε Ρυθμίσεις αρχικής σελίδας &gt; Εφαρμογές &gt; Διαχείριση εφαρμογών."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Επιλέξτε μια ενέργεια"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Δεν υπάρχουν εφαρμογές, οι οποίες μπορούν να εκτελέσουν αυτήν την ενέργεια."</string>
<string name="aerr_title" msgid="653922989522758100">"Λυπούμαστε!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Υπήρξε μη αναμενόμενη διακοπή της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> (διαδικασία <xliff:g id="PROCESS">%2$s</xliff:g>). Προσπαθήστε ξανά."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index b8f624e..90c52fc 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Allows the application to control the vibrator."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"control flashlight"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Allows the application to control the flashlight."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"access USB devices"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Allows the application to access USB devices."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implement MTP protocol"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Allows access to the kernel MTP driver to implement the MTP USB protocol."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"test hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Use by default for this action."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Clear default in Home Settings &gt; Applications &gt; Manage applications."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Select an action"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"No applications can perform this action."</string>
<string name="aerr_title" msgid="653922989522758100">"Sorry!"</string>
<string name="aerr_application" msgid="4683614104336409186">"The application <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has stopped unexpectedly. Please try again."</string>
@@ -879,7 +883,7 @@
<string name="usb_storage_title" msgid="5901459041398751495">"USB connected"</string>
<string name="usb_storage_message" product="nosdcard" msgid="6631094834151575841">"You have connected to your computer via USB. Touch the button below if you want to copy files between your computer and your Android‘s USB storage."</string>
<string name="usb_storage_message" product="default" msgid="4510858346516069238">"You have connected to your computer via USB. Touch the button below if you want to copy files between your computer and your Android‘s SD card."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"Turn off USB storage"</string>
+ <string name="usb_storage_button_mount" msgid="1052259930369508235">"Turn on USB storage"</string>
<string name="usb_storage_error_message" product="nosdcard" msgid="3276413764430468454">"There is a problem with using your USB storage for USB mass storage."</string>
<string name="usb_storage_error_message" product="default" msgid="120810397713773275">"There is a problem with using your SD card for USB mass storage."</string>
<string name="usb_storage_notification_title" msgid="8175892554757216525">"USB connected"</string>
diff --git a/core/res/res/values-es-rUS-xlarge/strings.xml b/core/res/res/values-es-rUS-xlarge/strings.xml
deleted file mode 100644
index b1409ba..0000000
--- a/core/res/res/values-es-rUS-xlarge/strings.xml
+++ /dev/null
@@ -1,337 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- XL -->
- <string name="fileSizeSuffix" msgid="3468563433835560758">"Segmento <xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <!-- XL -->
- <string name="unknownName" msgid="3202822008051920747">"(Desconocido)"</string>
- <!-- XL -->
- <string name="defaultVoiceMailAlphaTag" msgid="3668436100965334106">"Buzón de voz"</string>
- <!-- XL -->
- <string name="serviceClassVoice" msgid="7086876533404179039">"Google Voice"</string>
- <!-- XL -->
- <string name="cfTemplateNotForwarded" msgid="8534356655497306518">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: no se ha reenviado"</string>
- <!-- XL -->
- <string name="cfTemplateRegistered" msgid="1255841210142514510">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: no se ha reenviado"</string>
- <!-- XL -->
- <string name="cfTemplateRegisteredTime" msgid="7798907169190952367">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: no se ha reenviado"</string>
- <!-- XL -->
- <string name="notification_title" msgid="5210128823045542445">"Error al acceder a <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
- <!-- XL -->
- <string name="low_memory" product="tablet" msgid="4855646606241379548">"¡El espacio de almacenamiento de la tableta está completo! Elimina algunos archivos para liberar espacio."</string>
- <string name="low_memory" product="default" msgid="9195238880281578473">"¡El espacio de almacenamiento está completo! Elimina algunos archivos para liberar espacio."</string>
- <!-- XL -->
- <string name="power_dialog" product="tablet" msgid="6884163545695410971">"Opciones de tableta"</string>
- <string name="power_dialog" product="default" msgid="8882103237148972564">"Opciones de teléfono"</string>
- <!-- XL -->
- <string name="silent_mode" msgid="5687977677409351252">"Modo silencio"</string>
- <!-- XL -->
- <string name="shutdown_confirm" product="tablet" msgid="5776903973889956395">"Tu tableta se apagará."</string>
- <string name="shutdown_confirm" product="default" msgid="3040950969577046278">"Tu teléfono se apagará."</string>
- <!-- XL -->
- <string name="global_actions" product="tablet" msgid="110297659383505180">"Opciones de tableta"</string>
- <string name="global_actions" product="default" msgid="2108237350837066773">"Opciones de teléfono"</string>
- <!-- XL -->
- <string name="global_action_toggle_silent_mode" msgid="4538951049191334644">"Modo silencio"</string>
- <!-- XL -->
- <string name="global_action_silent_mode_off_status" msgid="9045822172493147761">"El sonido está ENCENDIDO"</string>
- <!-- XL -->
- <string name="global_actions_airplane_mode_on_status" msgid="7272433204482202219">"El modo avión está ENCENDIDO"</string>
- <!-- XL -->
- <string name="android_system_label" msgid="844561213652704593">"Sistema Androide"</string>
- <!-- XL -->
- <string name="permgroupdesc_costMoney" msgid="4836624191696189469">"Admitir que las aplicaciones realicen actividades que se cobran."</string>
- <!-- XL -->
- <string name="permgroupdesc_developmentTools" msgid="5514251182135739578">"Las funciones sólo son necesarias para los programadores de aplicaciones."</string>
- <!-- XL -->
- <string name="permgrouplab_storage" msgid="746210798053836644">"Almacenamiento"</string>
- <!-- XL -->
- <string name="permdesc_readSms" product="tablet" msgid="3026416194429353337">"Permite que la aplicación lea los mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string>
- <string name="permdesc_readSms" product="default" msgid="191875931331016383">"Admite que la aplicación lea los mensajes SMS almacenados en tu teléfono o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string>
- <!-- XL -->
- <string name="permdesc_writeSms" product="tablet" msgid="692041754996169941">"Permite que la aplicación escriba a los mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden borrar tus mensajes."</string>
- <string name="permdesc_writeSms" product="default" msgid="1659315878254882599">"Admite que la aplicación escriba a los mensajes SMS almacenados en tu teléfono o tarjeta SIM. Las aplicaciones maliciosas pueden borrar tus mensajes."</string>
- <!-- XL -->
- <string name="permlab_forceStopPackages" msgid="1277034765943155677">"provocar la detención de otras aplicaciones"</string>
- <!-- XL -->
- <string name="permlab_forceBack" msgid="4272218642115232597">"cerrar la aplicación a la fuerza"</string>
- <!-- XL -->
- <string name="permdesc_injectEvents" product="tablet" msgid="6096352450860864899">"Permite que una aplicación ofrezca sus propios eventos de entrada (presionar teclas, etc.) a otras aplicaciones. Las aplicaciones maliciosas pueden utilizarlo para tomar el control de la tableta."</string>
- <string name="permdesc_injectEvents" product="default" msgid="2842435693076075109">"Admite una aplicación que ofrece sus propios eventos de entrada (presionar teclas, etc.) a otras aplicaciones. Las aplicaciones maliciosas pueden utilizarlo para tomar el control del teléfono."</string>
- <!-- XL -->
- <string name="permdesc_clearAppCache" product="tablet" msgid="1147333973960547529">"Permite que una aplicación libere espacio de almacenamiento en la tableta eliminando archivos del directorio de memoria caché de la aplicación. En general, el acceso es muy restringido para el proceso del sistema."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="5790679870501740958">"Admite una aplicación que libera espacio de almacenamiento en el teléfono al eliminar archivos del directorio de memoria caché de la aplicación. En general, el acceso es muy restringido para el proceso del sistema."</string>
- <!-- XL -->
- <string name="permdesc_readLogs" product="tablet" msgid="3701009088710926065">"Permite que una aplicación lea diversos archivos de registro del sistema. Esto le permite descubrir información general acerca de lo que haces con la tableta, y puede potencialmente incluir información personal o privada."</string>
- <string name="permdesc_readLogs" product="default" msgid="8520101632251038537">"Admite una aplicación que lee diversos archivos de registro del sistema. Esto te permite descubrir información general acerca de lo que haces con el teléfono, y puede potencialmente incluir información personal o privada."</string>
- <!-- XL -->
- <string name="permdesc_changeComponentState" product="tablet" msgid="1791075936446230356">"Permite que una aplicación cambie si se debe activar o no un componente de otra aplicación. Las aplicaciones maliciosas pueden utilizarlo para desactivar funciones importantes de la tableta. Se debe tener cuidado con el permiso, ya que es posible que los componentes de la aplicación alcancen un estado inservible, imperfecto e inestable."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="587130297076242796">"Permite que una aplicación cambie si se debe activar o no un componente de otra aplicación. Las aplicaciones maliciosas pueden utilizarlo para desactivar funciones importantes del teléfono. Se debe tener cuidado con el permiso, ya que es posible que los componentes de la aplicación alcancen un estado inservible, imperfecto e inestable."</string>
- <!-- XL -->
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="8660405432665162821">"Permite que una aplicación se inicie en cuanto el sistema haya finalizado la inicialización. Esto puede ocasionar que la tableta demore más en inicializar y que la aplicación retarde el funcionamiento total de la tableta al estar en ejecución constante."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="1827765096700833418">"Admite una aplicación que se inicia cuando el sistema haya finalizado la inicialización. Esto puede ocasionar que se demore más tiempo en inicializar el teléfono y que la aplicación retarde el funcionamiento total del teléfono al estar en ejecución constante."</string>
- <!-- XL -->
- <string name="permdesc_readContacts" product="tablet" msgid="1611730857475623952">"Permite que una aplicación lea todos los datos de de contacto (direcciones) almacenados en tu tableta. Las aplicaciones maliciosas pueden utilizarlo para enviar tus datos a otras personas."</string>
- <string name="permdesc_readContacts" product="default" msgid="6610535719925788049">"Admite una aplicación que lee todos los datos de (direcciones) de contactos almacenados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para enviar tus eventos de calendario a otras personas."</string>
- <!-- XL -->
- <string name="permdesc_writeContacts" product="tablet" msgid="4572703488642353934">"Permite que una aplicación modifique los datos de (dirección) guardados en tu tableta. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar los datos de contacto."</string>
- <string name="permdesc_writeContacts" product="default" msgid="714397557711969040">"Admite una aplicación que modifica los datos de (dirección de) contacto guardados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar los datos de contacto."</string>
- <!-- XL -->
- <string name="permdesc_readCalendar" product="tablet" msgid="2991522150157238929">"Permite que una aplicación lea todos los eventos de calendario almacenados en tu tableta. Las aplicaciones maliciosas pueden utilizarlo para enviar tus eventos de calendario a otras personas."</string>
- <string name="permdesc_readCalendar" product="default" msgid="2618681024074734985">"Admite que una aplicación lea todos los eventos de calendario almacenados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para enviar tus eventos de calendario a otras personas."</string>
- <!-- XL -->
- <string name="permdesc_accessFineLocation" product="tablet" msgid="9186984659787705379">"Accede a las fuentes de ubicación precisa, como el Sistema de posicionamiento global en la tableta, si está disponible. Las aplicaciones maliciosas pueden utilizarlo para determinar donde te encuentras y puede consumir energía adicional de la batería."</string>
- <string name="permdesc_accessFineLocation" product="default" msgid="7130852247133907221">"Accede a las fuentes de ubicación precisa, como el Sistema de posicionamiento global en el teléfono, si está disponible. Las aplicaciones maliciosas pueden utilizarlo para determinar donde te encuentras y puede consumir energía adicional de la batería."</string>
- <!-- XL -->
- <string name="permdesc_accessCoarseLocation" product="tablet" msgid="2943949975553225591">"Accede a las fuentes de ubicación aproximada, como la base de datos de la red de celulares, para determinar la ubicación aproximada de un tableta, si está disponible. Las aplicaciones maliciosas pueden utilizarlo para determinar aproximadamente dónde te encuentras."</string>
- <string name="permdesc_accessCoarseLocation" product="default" msgid="7474972764638621839">"Accede a las fuentes de ubicación aproximada, como la base de datos de la red de celulares, para determinar una ubicación telefónica aproximada, si está disponible. Las aplicaciones maliciosas pueden utilizarlo para determinar aproximadamente donde te encuentras."</string>
- <!-- XL -->
- <string name="permlab_brick" product="tablet" msgid="6967130388106614085">"inhabilitar tableta de forma permanente"</string>
- <string name="permlab_brick" product="default" msgid="3120283238813720510">"desactivar teléfono de manera permanente"</string>
- <!-- XL -->
- <string name="permdesc_brick" product="tablet" msgid="8506097851567246888">"Permite que la aplicación desactive todo la tableta de manera permanente. Esto es muy peligroso."</string>
- <string name="permdesc_brick" product="default" msgid="6696459767254028146">"Admite que la aplicación desactive todo el teléfono de manera permanente. Esto es muy peligroso."</string>
- <!-- XL -->
- <string name="permlab_reboot" product="tablet" msgid="8299304590708874992">"forzar reinicio de la tableta"</string>
- <string name="permlab_reboot" product="default" msgid="7761230490609718232">"provocar el reinicio del teléfono"</string>
- <!-- XL -->
- <string name="permdesc_reboot" product="tablet" msgid="8289402537687518137">"Permite que la aplicación provoque el reinicio de la tableta."</string>
- <string name="permdesc_reboot" product="default" msgid="2425170170087532554">"Admite que la aplicación provoque que el teléfono se reinicie."</string>
- <!-- XL -->
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="1602175938040327630">"iniciar directamente la configuración CDMA de la tableta"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="2364447039211144234">"comienza directamente la configuración CDMA del teléfono"</string>
- <!-- XL -->
- <string name="permlab_checkinProperties" msgid="8770356116386811264">"acceder a las propiedades de registro"</string>
- <!-- XL -->
- <string name="permlab_bindGadget" msgid="2772444448613501375">"elegir controles"</string>
- <!-- XL -->
- <string name="permdesc_bindGadget" msgid="5172327215211875807">"Admite que la aplicación indique al sistema cuáles controles puede utilizar cada aplicación. Con este permiso, las aplicaciones pueden brindar acceso a los datos personales a otras aplicaciones. Las aplicaciones normales no deben utilizarlo."</string>
- <!-- XL -->
- <string name="permlab_wakeLock" product="tablet" msgid="8548785337425173690">"evitar que la tableta entre en estado de inactividad"</string>
- <string name="permlab_wakeLock" product="default" msgid="7590534090355174805">"evitar que el teléfono entre en estado de inactividad"</string>
- <!-- XL -->
- <string name="permdesc_wakeLock" product="tablet" msgid="6871828582124115814">"Permite que una aplicación evite que la tableta entre en estado de inactividad."</string>
- <string name="permdesc_wakeLock" product="default" msgid="1200311528451468554">"Admite una aplicación que evita que el teléfono entre en estado de inactividad."</string>
- <!-- XL -->
- <string name="permlab_devicePower" product="tablet" msgid="4737873025369971061">"apagar o encender la tableta"</string>
- <string name="permlab_devicePower" product="default" msgid="6879460773734563850">"apagar o encender el teléfono"</string>
- <!-- XL -->
- <string name="permdesc_devicePower" product="tablet" msgid="5930342678996327905">"Permite que una aplicación encienda o apague la tableta."</string>
- <string name="permdesc_devicePower" product="default" msgid="6653901512148320818">"Admite que la aplicación encienda o apague el teléfono."</string>
- <!-- XL -->
- <string name="permdesc_factoryTest" product="tablet" msgid="396653994609190055">"Se ejecuta como una prueba de fábrica de bajo nivel que permite un acceso completo al hardware de la tableta. Sólo disponible cuando la tableta se ejecuta en el modo de prueba de fábrica."</string>
- <string name="permdesc_factoryTest" product="default" msgid="4581239666568781766">"Se ejecuta como una prueba de fábrica de bajo nivel que permite un acceso completo al hardware del teléfono. Sólo disponible cuando un teléfono se ejecuta en el modo de prueba de fábrica."</string>
- <!-- XL -->
- <string name="permlab_setWallpaper" msgid="845032615203772571">"establecer fondo de pantalla"</string>
- <!-- XL -->
- <string name="permdesc_setWallpaper" msgid="3378501759667797259">"Admite que la aplicación establezca el fondo de pantalla del sistema."</string>
- <!-- XL -->
- <string name="permlab_setWallpaperHints" msgid="4995885499848128983">"establecer sugerencias de tamaño del fondo de pantalla"</string>
- <!-- XL -->
- <string name="permdesc_setWallpaperHints" msgid="8857901708691279048">"Admite que la aplicación establezca las sugerencias de tamaño del fondo de pantalla del sistema."</string>
- <!-- XL -->
- <string name="permdesc_setTime" product="tablet" msgid="7329574196603775554">"Permite que una aplicación cambie la hora de la tableta."</string>
- <string name="permdesc_setTime" product="default" msgid="7787175369529849526">"Permite a una aplicación cambiar la hora del teléfono."</string>
- <!-- XL -->
- <string name="permdesc_setTimeZone" product="tablet" msgid="3851480395450283316">"Permite que una aplicación cambie la zona horaria de la tableta."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="3231143515254577541">"Admite una aplicación que cambia la zona horaria del teléfono."</string>
- <!-- XL -->
- <string name="permdesc_getAccounts" product="tablet" msgid="374861616407073729">"Permite que una aplicación obtenga una la lista de cuentas conocidas por la tableta."</string>
- <string name="permdesc_getAccounts" product="default" msgid="6356501268884684429">"Admite una aplicación que obtiene la lista de cuentas conocidas del teléfono."</string>
- <!-- XL -->
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="8034248164659819866">"Permite que una aplicación configure el Bluetooth local de la tableta, y descubra y se vincule con dispositivos remotos."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="2555370145147752776">"Admite una aplicación que configura el teléfono Bluetooth local y descubre y se vincula con dispositivos remotos."</string>
- <!-- XL -->
- <string name="permdesc_bluetooth" product="tablet" msgid="4631562404621086816">"Permite que una aplicación vea la configuración de la tableta Bluetooth local, y que realice y acepte conexiones con dispositivos vinculados."</string>
- <string name="permdesc_bluetooth" product="default" msgid="1202135959389935958">"Admite una aplicación que ve la configuración del teléfono Bluetooth local, y realiza y acepta conexiones con dispositivos vinculados."</string>
- <!-- XL -->
- <string name="policydesc_watchLogin" product="tablet" msgid="7927990389488709968">"Supervisar el número de contraseñas incorrectas ingresadas al desbloquear la pantalla, y bloquear la tableta o eliminar todos los datos del teléfono si se ingresan demasiadas contraseñas incorrectas."</string>
- <string name="policydesc_watchLogin" product="default" msgid="4998594853332798741">"Supervisa el número de contraseñas incorrectas ingresadas al desbloquear la pantalla, y bloquee el teléfono o elimine todos los datos del teléfono si se ingresan demasiadas contraseñas incorrectas."</string>
- <!-- XL -->
- <string name="policydesc_wipeData" product="tablet" msgid="7871059407132175855">"Borrar los datos de la tableta sin advertencias, restableciendo la configuración de fábrica"</string>
- <string name="policydesc_wipeData" product="default" msgid="6003127471292136411">"Borrar los datos del teléfono sin advertencias al restablecer la configuración original"</string>
- <!-- XL -->
- <string-array name="phoneTypes">
- <item msgid="7066790683658405096">"Pantalla principal"</item>
- <item msgid="5813675571320075289">"Teléfono móvil"</item>
- <item msgid="1236863745322977021">"Trabajo"</item>
- <item msgid="7018038125868933566">"Fax laboral"</item>
- <item msgid="4280105707643078852">"Fax personal"</item>
- <item msgid="6527083287534782580">"Localizador"</item>
- <item msgid="706618935041239888">"Otro"</item>
- <item msgid="8099625332540070724">"Personalizado"</item>
- </string-array>
- <!-- XL -->
- <string-array name="emailAddressTypes">
- <item msgid="8080673853442355385">"Pantalla principal"</item>
- <item msgid="924798042157989715">"Trabajo"</item>
- <item msgid="1959796935508361158">"Otro"</item>
- <item msgid="756534161520555926">"Personalizado"</item>
- </string-array>
- <!-- XL -->
- <string-array name="postalAddressTypes">
- <item msgid="1166454994471190496">"Pantalla principal"</item>
- <item msgid="3602955376664951787">"Trabajo"</item>
- <item msgid="4646105398231575508">"Otro"</item>
- <item msgid="8191179302220976184">"Personalizado"</item>
- </string-array>
- <!-- XL -->
- <string-array name="imAddressTypes">
- <item msgid="2528436635522549040">"Pantalla principal"</item>
- <item msgid="5834207144511084508">"Trabajo"</item>
- <item msgid="3796683891024584813">"Otro"</item>
- <item msgid="6644316676098098833">"Personalizado"</item>
- </string-array>
- <!-- XL -->
- <string-array name="organizationTypes">
- <item msgid="6571823895277482483">"Trabajo"</item>
- <item msgid="4013674940836786104">"Otro"</item>
- <item msgid="8549998141814637453">"Personalizado"</item>
- </string-array>
- <!-- XL -->
- <string name="phoneTypeHome" msgid="2087652870939635038">"Pantalla principal"</string>
- <!-- XL -->
- <string name="phoneTypeMobile" msgid="7084573626440935140">"Teléfono móvil"</string>
- <!-- XL -->
- <string name="emailTypeHome" msgid="1298773522695936612">"Pantalla principal"</string>
- <!-- XL -->
- <string name="emailTypeMobile" msgid="5515624509217674980">"Teléfono móvil"</string>
- <!-- XL -->
- <string name="postalTypeHome" msgid="7553888805834710738">"Pantalla principal"</string>
- <!-- XL -->
- <string name="imTypeHome" msgid="3732426015472142690">"Pantalla principal"</string>
- <!-- XL -->
- <string name="sipAddressTypeHome" msgid="8212230577724692911">"Pantalla principal"</string>
- <!-- XL -->
- <string name="lockscreen_pattern_instructions" msgid="9171665895877154059">"Extraer el patrón para desbloquear"</string>
- <!-- XL -->
- <string name="lockscreen_battery_short" msgid="891372653127247039">"Segmento <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <!-- XL -->
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="3961770350078423154">"No hay tarjeta SIM en la tableta."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="5997031739677800758">"No hay tarjeta SIM en el teléfono."</string>
- <!-- XL -->
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="2429599468920598896">"Has establecido incorrectamente tu gráfico de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Vuelve a intentarlo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string>
- <!-- XL -->
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3211267232692817092">"Has establecido incorrectamente tu gráfico de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu tableta al acceder a Google."\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="7097890594752816076">"Has establecido incorrectamente tu gráfico de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos, se te solicitará que desbloquees tu teléfono al acceder a Google. "\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string>
- <!-- XL -->
- <string name="lockscreen_glogin_submit_button" msgid="4760302858316749698">"Acceder"</string>
- <!-- XL -->
- <string name="lockscreen_glogin_invalid_input" msgid="7265806099449246244">"Nombre de usuario o contraseña no válidos."</string>
- <!-- XL -->
- <string name="hour_ampm" msgid="6161399724998500216">"Segmento <xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <!-- XL -->
- <string name="hour_cap_ampm" msgid="724197720606114012">"Segmento <xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <!-- XL -->
- <string name="double_tap_toast" msgid="2893001600485832537">"Sugerencia: presiona dos veces para acercar y alejar"</string>
- <!-- XL -->
- <string name="autofill_address_name_separator" msgid="5171727678145785075">" Segmento "</string>
- <!-- XL -->
- <string name="permlab_readHistoryBookmarks" msgid="6148149152792104516">"leer historial y favoritos del navegador"</string>
- <!-- XL -->
- <string name="permdesc_readHistoryBookmarks" msgid="7371336472744100059">"Permite a la aplicación leer todas las URL que ha visitado el navegador y todos los favoritos del navegador."</string>
- <!-- XL -->
- <string name="permlab_writeHistoryBookmarks" msgid="1369319390968848231">"escribir historial y favoritos del navegador"</string>
- <!-- XL -->
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="3870229397949634482">"Permite que una aplicación modifique el historial de navegación y los favoritos del navegador almacenados en tu tableta. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar los datos en tu navegador."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="6845659334691579933">"Permite a una aplicación modificar el historial y los favoritos del navegador almacenados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar tus datos."</string>
- <!-- XL -->
- <string name="permlab_setAlarm" msgid="8112208516527103653">"fija la alarma en el reloj de alarma"</string>
- <!-- XL -->
- <string name="permdesc_setAlarm" msgid="5454386032150297784">"Permite a la aplicación fijar una alarma en una aplicación de alarma. Es posible que algunas aplicaciones de alarma no implementen esta función."</string>
- <!-- XL -->
- <string name="menu_delete_shortcut_label" msgid="8482704027019632634">"eliminar"</string>
- <!-- XL -->
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="468685153446407901">"hace 1 minuto"</item>
- <item quantity="other" msgid="211907662145171054">"Hace <xliff:g id="COUNT">%d</xliff:g> minutos"</item>
- </plurals>
- <!-- XL -->
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="2172827344495633666">"hace 1 hora"</item>
- <item quantity="other" msgid="6094391999921908511">"Hace <xliff:g id="COUNT">%d</xliff:g> horas"</item>
- </plurals>
- <!-- XL -->
- <plurals name="num_days_ago">
- <item quantity="one" msgid="3766494702684657165">"ayer"</item>
- <item quantity="other" msgid="5030316952487658828">"Hace <xliff:g id="COUNT">%d</xliff:g> días"</item>
- </plurals>
- <!-- XL -->
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1441918190525197797">"hace 1 s"</item>
- <item quantity="other" msgid="3958332340802316933">"hace <xliff:g id="COUNT">%d</xliff:g> segundos"</item>
- </plurals>
- <!-- XL -->
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="3404245071272952255">"hace 1 min"</item>
- <item quantity="other" msgid="6004808520903389765">"hace <xliff:g id="COUNT">%d</xliff:g> min"</item>
- </plurals>
- <!-- XL -->
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="806010152744475654">"hace 1 hora"</item>
- <item quantity="other" msgid="7553525762196895290">"Hace <xliff:g id="COUNT">%d</xliff:g> horas"</item>
- </plurals>
- <!-- XL -->
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="5819444260187611238">"ayer"</item>
- <item quantity="other" msgid="1069986768190052012">"Hace <xliff:g id="COUNT">%d</xliff:g> días"</item>
- </plurals>
- <!-- XL -->
- <string name="preposition_for_time" msgid="3606608741888559522">"a la/s <xliff:g id="TIME">%s</xliff:g>"</string>
- <!-- XL -->
- <string name="minutes" msgid="1486240209627391507">"min"</string>
- <!-- XL -->
- <string name="selectAll" msgid="847570914566450966">"Seleccionar todos"</string>
- <!-- XL -->
- <string name="low_internal_storage_view_text" product="tablet" msgid="6497548813789342134">"Está quedando poco espacio de almacenamiento en la tableta."</string>
- <string name="low_internal_storage_view_text" product="default" msgid="2901569701336868928">"Hay poco espacio de almacenamiento en el teléfono."</string>
- <!-- XL -->
- <string name="capital_on" msgid="5705918046896729554">"ENCENDIDO"</string>
- <!-- XL -->
- <string name="wait" msgid="8036803866051401072">"Espera"</string>
- <!-- XL -->
- <string name="heavy_weight_notification" msgid="5762367358298413602">"<xliff:g id="APP">%1$s</xliff:g> se está ejecutando"</string>
- <!-- XL -->
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="103298639852047758">"Preparando almacenamiento USB"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="2111086053471573248">"Preparando la tarjeta SD"</string>
- <!-- XL -->
- <string name="ime_action_done" msgid="7200237418945571897">"Listo"</string>
- <!-- XL -->
- <string name="wallpaper_binding_label" msgid="6966627494441714436">"Fondo de pantalla"</string>
- <!-- XL -->
- <string name="websearch" msgid="904596193450917688">"Búsqueda web"</string>
- <!-- XL -->
- <string name="status_bar_notification_info_overflow" msgid="1081154808901480710">"100+"</string>
- <!-- XL -->
- <string name="permlab_accessMtp" msgid="2385215229145694622">"implementar protocolo MTP"</string>
- <!-- XL -->
- <string name="permdesc_accessMtp" msgid="4707854877711083465">"Permite acceso al driver kernel MTP para implementar el protocolo MTP USB."</string>
- <!-- XL -->
- <string name="permlab_mediaStorageWrite" product="default" msgid="5585262071354704256">"modificar/eliminar los contenidos del almacenamientos de medios internos"</string>
- <!-- XL -->
- <string name="permdesc_mediaStorageWrite" product="default" msgid="2372999661142345443">"Permite que una aplicación modifique los contenidos del almacenamiento interno de medios."</string>
- <!-- XL -->
- <string name="autofill_address_summary_name_format" msgid="7531610259426153850">"$1$2$3"</string>
- <!-- XL -->
- <string name="autofill_address_summary_format" msgid="8398158823767723887">"$1$2$3"</string>
- <!-- XL -->
- <string name="gpsNotifTicker" msgid="6612390321359669319">"Solicitud de ubicación de <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- XL -->
- <string name="gpsNotifTitle" msgid="7533028619350196545">"Solicitud de ubicación"</string>
- <!-- XL -->
- <string name="gpsNotifMessage" msgid="5592972401593755530">"Solicitado por <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
- <!-- XL -->
- <string name="gpsVerifYes" msgid="1511016393202739483">"Sí"</string>
- <!-- XL -->
- <string name="gpsVerifNo" msgid="661731239940896232">"No"</string>
- <!-- XL -->
- <string name="sync_too_many_deletes" msgid="6088394702274114202">"Eliminar el límite excedido"</string>
- <!-- XL -->
- <string name="sync_too_many_deletes_desc" msgid="4794082462774743277">"Existen <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> artículos eliminados para <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, cuenta <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. ¿Qué te gustaría hacer?"</string>
- <!-- XL -->
- <string name="sync_really_delete" msgid="7782215155483034729">"Eliminar artículos."</string>
- <!-- XL -->
- <string name="sync_undo_deletes" msgid="6501390120900825477">"Deshacer eliminaciones."</string>
- <!-- XL -->
- <string name="sync_do_nothing" msgid="612038572646360281">"No hagas nada por el momento."</string>
-</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 35d425b..68a225a 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Admite que la aplicación controle el vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Admite que la aplicación controle la linterna."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"acceder a dispositivos USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permite que la aplicación acceda a dispositivos USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementar protocolo MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permite acceso al driver kernel MTP para implementar el protocolo MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"probar el hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utilizar de manera predeterminada en esta acción."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Borrar la predeterminación en Configuración de la página principal &gt; Aplicaciones &gt; Administrar aplicaciones."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Seleccionar una acción"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Ninguna aplicación puede realizar esta acción."</string>
<string name="aerr_title" msgid="653922989522758100">"¡Lo sentimos!"</string>
<string name="aerr_application" msgid="4683614104336409186">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) se ha detenido de forma imprevista. Vuelve a intentarlo."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 41fa758..82b774b 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permite que la aplicación controle la función de vibración."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permite que la aplicación controle la función de linterna."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"acceso a dispositivos USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"La aplicación puede acceder a dispositivos USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementar protocolo MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permite el acceso al controlador MTP del kernel para implementar el protocolo USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"probar hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utilizar de forma predeterminada para esta acción"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Borrar valores predeterminados en la página de configuración de la pantalla de inicio del teléfono &gt; Aplicaciones &gt; Administrar aplicaciones\"."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Seleccionar una acción"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Ninguna aplicación puede realizar esta acción."</string>
<string name="aerr_title" msgid="653922989522758100">"Lo sentimos."</string>
<string name="aerr_application" msgid="4683614104336409186">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) se ha interrumpido inesperadamente. Inténtalo de nuevo."</string>
@@ -974,7 +978,7 @@
<string name="tethered_notification_message" msgid="3067108323903048927">"Toca para iniciar la configuración."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
- <string name="skip_button_label" msgid="1275362299471631819">"Omitir"</string>
+ <string name="skip_button_label" msgid="1275362299471631819">"Saltar"</string>
<string name="throttle_warning_notification_title" msgid="4890894267454867276">"Uso elevado datos móviles"</string>
<string name="throttle_warning_notification_message" msgid="2609734763845705708">"Más información sobre uso de datos"</string>
<string name="throttled_notification_title" msgid="6269541897729781332">"Límite datos superado"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index fa74391..d8451e0 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"به برنامه کاربردی اجازه می دهد لرزاننده را کنترل کند."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"کنترل چراغ قوه"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"به برنامه کاربردی اجازه می دهد چراغ قوه را کنترل کند."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"دسترسی به دستگاه های USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"به برنامه کاربردی اجازه می دهد به دستگاه های USB دسترسی پیدا کند."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"اعمال پروتکل MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"دسترسی به درایور کرنل MTP جهت اعمال پروتکل MTP USB را اجازه می دهد."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"تست سخت افزار"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"استفاده به صورت پیش فرض برای این عملکرد."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"پاک کردن موارد پیش فرض در تنظیمات صفحه اصلی &gt; برنامه های کاربردی &gt; مدیریت برنامه ها."</string>
<string name="chooseActivity" msgid="1009246475582238425">"انتخاب یک عملکرد"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"هیچ برنامه ای نمی تواند این عملکرد را اجرا کند."</string>
<string name="aerr_title" msgid="653922989522758100">"متأسفیم!"</string>
<string name="aerr_application" msgid="4683614104336409186">"برنامه کاربردی <xliff:g id="APPLICATION">%1$s</xliff:g> ( فرآیند <xliff:g id="PROCESS">%2$s</xliff:g>) به طور غیر منتظره ای متوقف شد. لطفاً دوباره امتحان کنید."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 9c525cf..eab76b3 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Antaa sovelluksen hallita värinää."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"hallitse taskulamppua"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Antaa sovelluksen hallita lamppua."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"käytä USB-tiloja"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Antaa sovelluksen käyttää USB-tiloja."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"ota käyttöön MTP-protokolla"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Antaa sovelluksen käyttää kernel-MTP-ajuria ja ottaa käyttöön MTP USB-protokollan."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testaa laitteistoa"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Käytä oletuksena tälle toiminnolle."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Tyhjennä oletusasetus kohdassa Etusivun asetukset &gt; Sovellukset &gt; Hallinnoi sovelluksia."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Valitse toiminto"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Yksikään sovellus ei voi suorittaa tätä toimintoa."</string>
<string name="aerr_title" msgid="653922989522758100">"Pahoittelemme!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Sovellus <xliff:g id="APPLICATION">%1$s</xliff:g> (prosessi <xliff:g id="PROCESS">%2$s</xliff:g>) pysähtyi yllättäen. Yritä uudelleen."</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 39276af..cba5a15 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -126,7 +126,7 @@
<string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchronisation"</string>
<string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Trop de contenus supprimés (<xliff:g id="CONTENT_TYPE">%s</xliff:g>)."</string>
<string name="low_memory" product="tablet" msgid="2292820184396262278">"La mémoire de la tablette est pleine. Supprimez des fichiers pour libérer de l\'espace."</string>
- <string name="low_memory" product="default" msgid="6632412458436461203">"La mémoire du téléphone est pleine ! Supprimez des fichiers pour libérer de l\'espace."</string>
+ <string name="low_memory" product="default" msgid="6632412458436461203">"La mémoire du téléphone est pleine. Supprimez des fichiers pour libérer de l\'espace."</string>
<string name="me" msgid="6545696007631404292">"Moi"</string>
<string name="power_dialog" product="tablet" msgid="8545351420865202853">"Options de la tablette"</string>
<string name="power_dialog" product="default" msgid="1319919075463988638">"Options du téléphone"</string>
@@ -159,7 +159,7 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vos messages"</string>
<string name="permgroupdesc_messages" msgid="7045736972019211994">"Permet de lire et rédiger vos SMS, e-mails et autres messages."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vos informations personnelles"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accéder directement aux contacts et à l\'agenda stockés sur la tablette"</string>
+ <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accéder directement aux contacts et à l\'agenda enregistrés sur la tablette"</string>
<string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accédez directement aux contacts et à l\'agenda enregistrés sur votre téléphone."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Votre position"</string>
<string name="permgroupdesc_location" msgid="2430258821648348660">"Suivre votre position géographique"</string>
@@ -177,7 +177,7 @@
<string name="permgroupdesc_developmentTools" msgid="9056431193893809814">"Ces fonctionnalités sont réservées aux développeurs d\'applications."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accéder à la mémoire de stockage USB"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accès à la carte SD"</string>
+ <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accéder à la carte SD"</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"Désactivation ou modification de la barre d\'état"</string>
<string name="permdesc_statusBar" msgid="1365473595331989732">"Permet à une application de désactiver la barre d\'état ou d\'ajouter/supprimer des icônes système."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"barre d\'état"</string>
@@ -193,7 +193,7 @@
<string name="permlab_sendSms" msgid="5600830612147671529">"Envoi de messages SMS"</string>
<string name="permdesc_sendSms" msgid="1946540351763502120">"Permet aux applications d\'envoyer des messages SMS. Des applications malveillantes peuvent entraîner des frais en envoyant des messages sans vous en demander la confirmation."</string>
<string name="permlab_readSms" msgid="4085333708122372256">"Lecture des SMS ou MMS"</string>
- <string name="permdesc_readSms" product="tablet" msgid="5836710350295631545">"Permet à l\'application de lire les SMS stockés dans la mémoire de votre tablette ou sur votre carte SIM. Des applications malveillantes peuvent lire vos messages confidentiels."</string>
+ <string name="permdesc_readSms" product="tablet" msgid="5836710350295631545">"Permet à l\'application de lire les SMS enregistrés dans la mémoire de votre tablette ou sur votre carte SIM. Des applications malveillantes peuvent lire vos messages confidentiels."</string>
<string name="permdesc_readSms" product="default" msgid="3002170087197294591">"Permet à l\'application de lire les SMS enregistrés dans la mémoire de votre téléphone ou sur votre carte SIM. Des applications malveillantes peuvent lire vos messages confidentiels."</string>
<string name="permlab_writeSms" msgid="6881122575154940744">"Modification de SMS ou de MMS"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5332124772918835437">"Permet à une application de modifier des messages SMS stockés sur votre tablette ou sur votre carte SIM. Des applications malveillantes peuvent ainsi supprimer vos messages."</string>
@@ -258,7 +258,7 @@
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"associer à un service widget"</string>
<string name="permdesc_bindRemoteViews" msgid="2930855984822926963">"Permet à l\'application autorisée de s\'associer à l\'interface de plus haut niveau d\'un service widget. Les applications standard ne doivent jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"interagir avec l\'administrateur du périphérique"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="8714424333082216979">"Permet à l\'application d\'envoyer des intentions à l\'administrateur du périphérique. Les applications standard ne devraient jamais avoir recours à cette fonctionnalité."</string>
+ <string name="permdesc_bindDeviceAdmin" msgid="8714424333082216979">"Permet à l\'application d\'envoyer des intentions à l\'administrateur de l\'appareil. Les applications standard ne devraient jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_setOrientation" msgid="3365947717163866844">"Changement d\'orientation de l\'écran"</string>
<string name="permdesc_setOrientation" msgid="6335814461615851863">"Permet à une application de modifier la rotation de l\'écran à tout moment. Les applications normales ne devraient jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_signalPersistentProcesses" msgid="4255467255488653854">"Envoi de signaux Linux aux applications"</string>
@@ -309,10 +309,10 @@
<string name="permdesc_writeContacts" product="tablet" msgid="7782689510038568495">"Permet à une application de modifier les données (adresses) associées à vos contacts et stockées sur votre tablette. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier les données de vos contacts."</string>
<string name="permdesc_writeContacts" product="default" msgid="3924383579108183601">"Permet à une application de modifier toutes les données de contact (adresses) enregistrées sur le téléphone. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier vos données de contact."</string>
<string name="permlab_readCalendar" msgid="6898987798303840534">"lire des événements de l\'agenda"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="5905870265734599678">"Permet à une application de lire tous les événements d\'agenda stockés sur votre tablette. Des applications malveillantes peuvent exploiter cette fonctionnalité pour envoyer les événements de votre agenda à d\'autres personnes."</string>
- <string name="permdesc_readCalendar" product="default" msgid="5533029139652095734">"Permet à une application de lire tous les événements de l\'agenda enregistrés sur votre téléphone. Des applications malveillantes peuvent utiliser cette fonctionnalité pour envoyer les événements de votre agenda à d\'autres personnes."</string>
+ <string name="permdesc_readCalendar" product="tablet" msgid="5905870265734599678">"Permet à une application de lire tous les événements de l\'agenda enregistrés sur votre tablette. Des applications malveillantes peuvent exploiter cette fonctionnalité pour envoyer les événements de votre agenda à d\'autres personnes."</string>
+ <string name="permdesc_readCalendar" product="default" msgid="5533029139652095734">"Permet à une application de lire tous les événements de l\'agenda enregistrés sur votre téléphone. Des applications malveillantes peuvent exploiter cette fonctionnalité pour envoyer les événements de votre agenda à d\'autres personnes."</string>
<string name="permlab_writeCalendar" msgid="3894879352594904361">"ajouter ou modifier des événements d\'agenda et envoyer des e-mails aux invités"</string>
- <string name="permdesc_writeCalendar" msgid="2988871373544154221">"Autorise les applications à ajouter ou à modifier des événements dans votre agenda, qui pourra envoyer des e-mails aux invités. Des logiciels malveillants peuvent utiliser cette fonctionnalité pour supprimer ou modifier des événements de l\'agenda ou envoyer des e-mails aux invités."</string>
+ <string name="permdesc_writeCalendar" msgid="2988871373544154221">"Permet aux applications d\'ajouter ou de modifier des événements dans votre agenda, qui est susceptible d\'envoyer des e-mails aux invités. Des applications malveillantes peuvent exploiter cette fonctionnalité pour supprimer ou modifier des événements de l\'agenda ou envoyer des e-mails aux invités."</string>
<string name="permlab_accessMockLocation" msgid="8688334974036823330">"Création de sources de localisation fictives à des fins de test"</string>
<string name="permdesc_accessMockLocation" msgid="7648286063459727252">"Permet de créer des sources de localisation fictives à des fins de test. Des applications malveillantes peuvent utiliser cette fonctionnalité pour remplacer la position géographique et/ou l\'état fournis par des sources réelles comme le GPS ou les fournisseurs d\'accès."</string>
<string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"Accès aux commandes de fournisseur de position géographique supplémentaires"</string>
@@ -321,10 +321,10 @@
<string name="permdesc_installLocationProvider" msgid="5449175116732002106">"Créer des sources de données de localisation factices à des fins de test. Les applications malveillantes peuvent exploiter cette fonction pour remplacer la position géographique et/ou l\'état renvoyé par les sources de données de localisation réelles, telles que le GPS ou les fournisseurs réseau, ou pour surveiller et transmettre votre position géographique à une source externe."</string>
<string name="permlab_accessFineLocation" msgid="8116127007541369477">"Localisation OK (GPS)"</string>
<string name="permdesc_accessFineLocation" product="tablet" msgid="243973693233359681">"Permet d\'accéder à des sources de localisation précises telles que le système GPS de la tablette, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une utilisation accrue de la batterie."</string>
- <string name="permdesc_accessFineLocation" product="default" msgid="7411213317434337331">"Permet d\'accéder à des sources de localisation précises comme le Global Positioning System (GPS) sur le téléphone, lorsque ces services sont disponibles. Des applications malveillantes peuvent utiliser cette fonctionnalité pour déterminer l\'endroit où vous vous trouvez et augmenter la consommation de la batterie de votre téléphone."</string>
+ <string name="permdesc_accessFineLocation" product="default" msgid="7411213317434337331">"Permet d\'accéder à des sources de localisation précises telles que le système GPS du téléphone, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une utilisation accrue de la batterie."</string>
<string name="permlab_accessCoarseLocation" msgid="4642255009181975828">"Position géo. approximative (selon le réseau)"</string>
<string name="permdesc_accessCoarseLocation" product="tablet" msgid="3704633168985466045">"Permet d\'accéder à des sources de localisation approximatives telles que des bases de données de réseaux mobiles pour déterminer la position géographique de la tablette lorsque celle-ci est disponible. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position approximative."</string>
- <string name="permdesc_accessCoarseLocation" product="default" msgid="8235655958070862293">"Accès à des sources de localisation approximative (par ex. des bases de données de réseaux mobiles) pour déterminer la position géographique du téléphone, lorsque cette option est disponible. Des applications malveillantes peuvent utiliser cette fonctionnalité pour déterminer approximativement l\'endroit où vous vous trouvez."</string>
+ <string name="permdesc_accessCoarseLocation" product="default" msgid="8235655958070862293">"Permet d\'accéder à des sources de localisation approximatives telles que des bases de données de réseaux mobiles pour déterminer la position géographique du téléphone, lorsque cette option est disponible. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position approximative."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Accès à SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="6805241830020733025">"Permet à certaines applications d\'utiliser les fonctionnalités SurfaceFlinger de bas niveau."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Lecture de la mémoire tampon graphique"</string>
@@ -336,33 +336,35 @@
<string name="permlab_camera" msgid="3616391919559751192">"prendre des photos et enregistrer des vidéos"</string>
<string name="permdesc_camera" msgid="6004878235852154239">"Permet de prendre des photos et d\'enregistrer des vidéos avec l\'appareil photo. Cette fonctionnalité permet à l\'application de récupérer à tout moment les images perçues par l\'appareil."</string>
<string name="permlab_brick" product="tablet" msgid="2961292205764488304">"désactiver définitivement la tablette"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"Désactivation définitive du téléphone"</string>
+ <string name="permlab_brick" product="default" msgid="8337817093326370537">"désactiver définitivement le téléphone"</string>
<string name="permdesc_brick" product="tablet" msgid="7379164636920817963">"Permet à l\'application de désactiver définitivement la tablette. Cette fonctionnalité est très dangereuse."</string>
<string name="permdesc_brick" product="default" msgid="5569526552607599221">"Permet à l\'application de désactiver définitivement le téléphone. Cette fonctionnalité est très dangereuse."</string>
<string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"forcer le redémarrage de la tablette"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"Redémarrage forcé du téléphone"</string>
+ <string name="permlab_reboot" product="default" msgid="2898560872462638242">"forcer le redémarrage du téléphone"</string>
<string name="permdesc_reboot" product="tablet" msgid="4555793623560701557">"Permet à l\'application de forcer le redémarrage de la tablette."</string>
<string name="permdesc_reboot" product="default" msgid="7914933292815491782">"Permet à l\'application de forcer le redémarrage du téléphone."</string>
- <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"Monter et démonter des systèmes de fichiers"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="6253263792535859767">"Permet à l\'application de monter et démonter des systèmes de fichiers pour des périphériques de stockage amovibles."</string>
+ <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541">"Installer et désinstaller des systèmes de fichiers"</string>
+ <string name="permdesc_mount_unmount_filesystems" msgid="6253263792535859767">"Permet à l\'application d\'installer et de désinstaller des systèmes de fichiers pour des périphériques de stockage amovibles."</string>
<string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"Formatage du périphérique de stockage externe"</string>
<string name="permdesc_mount_format_filesystems" msgid="574060044906047386">"Permet à l\'application de formater le périphérique de stockage amovible."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obtenir des informations sur la mémoire de stockage interne"</string>
- <string name="permdesc_asec_access" msgid="8820326551687285439">"Permet à l\'application d\'obtenir des informations sur le stockage interne."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"créer un stockage interne"</string>
+ <string name="permdesc_asec_access" msgid="8820326551687285439">"Permet à l\'application d\'obtenir des informations sur la mémoire de stockage interne."</string>
+ <string name="permlab_asec_create" msgid="6414757234789336327">"créer une mémoire de stockage interne"</string>
<string name="permdesc_asec_create" msgid="2621346764995731250">"Permet à l\'application de créer une mémoire de stockage interne."</string>
<string name="permlab_asec_destroy" msgid="526928328301618022">"détruire la mémoire de stockage interne"</string>
- <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Permet à l\'application de détruire le stockage interne."</string>
+ <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Permet à l\'application de détruire la mémoire de stockage interne."</string>
<string name="permlab_asec_mount_unmount" msgid="2456287623689029744">"installer/désinstaller la mémoire de stockage interne"</string>
<string name="permdesc_asec_mount_unmount" msgid="5934375590189368200">"Permet l\'installation ou la désinstallation de la mémoire de stockage interne par l\'application."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"renommer la mémoire de stockage interne"</string>
- <string name="permdesc_asec_rename" msgid="2152829985238876790">"Permet à l\'application de renommer le stockage interne."</string>
+ <string name="permdesc_asec_rename" msgid="2152829985238876790">"Permet à l\'application de renommer la mémoire de stockage interne."</string>
<string name="permlab_vibrate" msgid="7768356019980849603">"Contrôle du vibreur"</string>
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permet à l\'application de contrôler le vibreur."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"Contrôle de la lampe de poche"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permet à l\'application de contrôler la lampe de poche."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"accéder aux périphériques USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Autorise l\'application à accéder aux périphériques USB"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"mettre en œuvre le protocole MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permet l\'accès au pilote MTP du noyau à des fins de mise en œuvre du protocole USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"Tests du matériel"</string>
@@ -385,16 +387,16 @@
<string name="permlab_readPhoneState" msgid="2326172951448691631">"Lire l\'état et l\'identité du téléphone"</string>
<string name="permdesc_readPhoneState" msgid="188877305147626781">"Permet à l\'application d\'accéder aux fonctionnalités d\'appel du téléphone. L\'application peut alors déterminer le numéro de téléphone et le numéro de série de l\'appareil, savoir si un appel est en cours, identifier le numéro appelé, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"empêcher la tablette de passer en mode veille"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"Arrêt du mode veille sur le téléphone"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="4032181488045338551">"Permet à une application d\'empêcher votre tablette de passer en mode veille."</string>
- <string name="permdesc_wakeLock" product="default" msgid="7584036471227467099">"Permet à une application d\'empêcher votre téléphone de passer en mode veille."</string>
+ <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"empêcher le téléphone de passer en mode veille"</string>
+ <string name="permdesc_wakeLock" product="tablet" msgid="4032181488045338551">"Permet à une application d\'empêcher la tablette de passer en mode veille."</string>
+ <string name="permdesc_wakeLock" product="default" msgid="7584036471227467099">"Permet à une application d\'empêcher le téléphone de passer en mode veille."</string>
<string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"éteindre ou allumer la tablette"</string>
<string name="permlab_devicePower" product="default" msgid="4928622470980943206">"Éteindre ou allumer le téléphone"</string>
<string name="permdesc_devicePower" product="tablet" msgid="3853773100100451905">"Permet à l\'application d\'éteindre et d\'allumer la tablette."</string>
<string name="permdesc_devicePower" product="default" msgid="4577331933252444818">"Permet à l\'application d\'éteindre et d\'allumer le téléphone."</string>
<string name="permlab_factoryTest" msgid="3715225492696416187">"Exécution en mode Test d\'usine"</string>
<string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Permet d\'exécuter une application en mode test fabricant de faible niveau, autorisant ainsi l\'accès complet à la tablette. Cette fonctionnalité est uniquement disponible lorsque la tablette est en mode test fabricant."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Permet d\'exécuter en tant que test fabricant de faible niveau en autorisant l\'accès au matériel du téléphone. Cette fonctionnalité est uniquement disponible lorsque le téléphone est en mode de test fabricant."</string>
+ <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Permet d\'exécuter une application en mode test fabricant de faible niveau en autorisant ainsi l\'accès au téléphone. Cette fonctionnalité est uniquement disponible lorsque le téléphone est en mode test fabricant."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"Configuration du fond d\'écran"</string>
<string name="permdesc_setWallpaper" msgid="6417041752170585837">"Permet à une application de définir le fond d\'écran du système."</string>
<string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Sélection de la la taille du fond d\'écran"</string>
@@ -437,13 +439,13 @@
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"autoriser la réception de données en Wi-Fi multidiffusion"</string>
<string name="permdesc_changeWifiMulticastState" msgid="8199464507656067553">"Autorise une application à recevoir des paquets qui ne sont pas directement adressés à votre mobile. Cela peut être utile pour la recherche de services disponibles à proximité. Consomme plus que le mode non multidiffusion."</string>
<string name="permlab_bluetoothAdmin" msgid="1092209628459341292">"Gestion Bluetooth"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="3511795757324345837">"Permet à une application de configurer la tablette Bluetooth locale, de trouver des périphériques distants et de les associer à la tablette."</string>
+ <string name="permdesc_bluetoothAdmin" product="tablet" msgid="3511795757324345837">"Permet à une application de configurer la tablette Bluetooth locale, d\'identifier des appareils distants et de les associer à la tablette."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="7256289774667054555">"Permet à une application de configurer le téléphone Bluetooth local, d\'identifier des périphériques distants et de les associer au téléphone."</string>
<string name="permlab_bluetooth" msgid="8361038707857018732">"Création de connexions Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="4191941825910543803">"Permet à une application d\'obtenir la configuration de la tablette Bluetooth locale, de se connecter à des appareils associés et d\'accepter leur connexion."</string>
- <string name="permdesc_bluetooth" product="default" msgid="762515380679392945">"Permet à une application d\'obtenir la configuration du téléphone Bluetooth local et de créer et accepter des connexions à des appareils associés."</string>
+ <string name="permdesc_bluetooth" product="default" msgid="762515380679392945">"Permet à une application d\'obtenir la configuration du téléphone Bluetooth local, de se connecter à des appareils associés et d\'accepter leur connexion."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"contrôler la communication en champ proche"</string>
- <string name="permdesc_nfc" msgid="9171401851954407226">"Autorise une application à communiquer avec des tags, cartes et lecteurs prenant en charge la communication en champ proche (NFC)."</string>
+ <string name="permdesc_nfc" msgid="9171401851954407226">"Permet à une application de communiquer avec des tags, cartes et lecteurs prenant en charge la communication en champ proche (NFC)."</string>
<string name="permlab_disableKeyguard" msgid="4977406164311535092">"Désactivation du verrouillage des touches"</string>
<string name="permdesc_disableKeyguard" msgid="3189763479326302017">"Permet à une application de désactiver le verrouillage des touches et toute sécurité par mot de passe. Exemple : Votre téléphone désactive le verrouillage du clavier lorsque vous recevez un appel, puis le réactive lorsque vous raccrochez."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"Lecture des paramètres de synchronisation"</string>
@@ -461,7 +463,7 @@
<string name="permlab_writeDictionary" msgid="6703109511836343341">"Enregistrement dans le dictionnaire défini par l\'utilisateur"</string>
<string name="permdesc_writeDictionary" msgid="2241256206524082880">"Permet à une application d\'enregistrer de nouveaux mots dans le dictionnaire personnel de l\'utilisateur."</string>
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modifier/supprimer le contenu de la mémoire de stockage USB"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"Modifier/supprimer le contenu de la carte SD"</string>
+ <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifier/supprimer le contenu de la carte SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Autorise une application à écrire sur la mémoire USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="6643963204976471878">"Autorise une application à écrire sur la carte SD."</string>
<string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modif./suppr. contenu mémoire interne support"</string>
@@ -474,16 +476,16 @@
<string name="policydesc_limitPassword" msgid="9083400080861728056">"Gérer le nombre et le type de caractères autorisés dans les mots de passe de déverrouillage de l\'écran"</string>
<string name="policylab_watchLogin" msgid="914130646942199503">"Gérer les tentatives de déverrouillage de l\'écran"</string>
<string name="policydesc_watchLogin" product="tablet" msgid="933601759466308092">"Surveiller le nombre de mots de passe incorrects saisis lors du déverrouillage de l\'écran et verrouiller la tablette ou effacer toutes ses données après un certain nombre de tentatives."</string>
- <string name="policydesc_watchLogin" product="default" msgid="7227578260165172673">"Gérer le nombre de mots de passe incorrects saisis lors du déverrouillage de l\'écran et verrouiller le téléphone ou effacer toutes ses données après un certain nombre de tentatives"</string>
+ <string name="policydesc_watchLogin" product="default" msgid="7227578260165172673">"Surveiller le nombre de mots de passe incorrects saisis lors du déverrouillage de l\'écran et verrouiller le téléphone ou effacer toutes ses données après un certain nombre de tentatives"</string>
<string name="policylab_resetPassword" msgid="2620077191242688955">"Modifier le mot de passe de déverrouillage de l\'écran"</string>
<string name="policydesc_resetPassword" msgid="5391240616981297361">"Modifier le mot de passe de déverrouillage de l\'écran"</string>
<string name="policylab_forceLock" msgid="2274085384704248431">"Verrouiller l\'écran"</string>
<string name="policydesc_forceLock" msgid="5696964126226028442">"Gérer le mode et les conditions de verrouillage de l\'écran"</string>
<string name="policylab_wipeData" msgid="3910545446758639713">"Effacer toutes les données"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="314455232799486222">"Effacer les données de la tablette sans avertissement, en réinitialisant la configuration usine"</string>
- <string name="policydesc_wipeData" product="default" msgid="7669895333814222586">"Effacer les données du téléphone sans avertissement, en restaurant les valeurs d\'usine"</string>
+ <string name="policydesc_wipeData" product="tablet" msgid="314455232799486222">"Effacer les données de la tablette sans avertissement, en restaurant la configuration usine"</string>
+ <string name="policydesc_wipeData" product="default" msgid="7669895333814222586">"Effacer les données du téléphone sans avertissement, en restaurant la configuration usine"</string>
<string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Définir le proxy global du mobile"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Indiquez le proxy global à utiliser pour ce mobile lorsque les règles sont activées. Seul l\'administrateur principal du mobile peut définir le proxy global utilisé."</string>
+ <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Indiquer le proxy global à utiliser pour ce mobile lorsque les règles sont activées. Seul l\'administrateur principal du mobile peut définir le proxy global utilisé."</string>
<!-- outdated translation 4740941403188940274 --> <string name="policylab_expirePassword" msgid="885279151847254056">"Définir la date d\'expiration du mot de passe"</string>
<!-- outdated translation 6626724939177185949 --> <string name="policydesc_expirePassword" msgid="4844430354224822074">"Définir la fréquence de changement du mot de passe de verrouillage d\'écran"</string>
<string name="policylab_encryptedStorage" msgid="8901326199909132915">"Définir cryptage du stockage"</string>
@@ -606,11 +608,11 @@
<string name="keyguard_password_enter_password_code" msgid="9138158344813213754">"Saisissez le mot de passe pour procéder au déverrouillage."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="638347075625491514">"Saisissez le code PIN pour procéder au déverrouillage."</string>
<string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Le code PIN est incorrect !"</string>
- <string name="keyguard_label_text" msgid="861796461028298424">"Pour débloquer le clavier, appuyez sur \"Menu\" puis sur 0."</string>
+ <string name="keyguard_label_text" msgid="861796461028298424">"Pour déverrouiller le clavier, appuyez sur \"Menu\" puis sur 0."</string>
<string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Numéro d\'urgence"</string>
<string name="lockscreen_carrier_default" msgid="8812714795156374435">"(Aucun service)"</string>
<string name="lockscreen_screen_locked" msgid="7288443074806832904">"Écran verrouillé"</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Appuyez sur \"Menu\" pour débloquer le téléphone ou appeler un numéro d\'urgence"</string>
+ <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Appuyez sur \"Menu\" pour déverrouiller le téléphone ou appeler un numéro d\'urgence"</string>
<string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Appuyez sur \"Menu\" pour déverrouiller le téléphone."</string>
<string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Dessinez un schéma pour déverrouiller le téléphone"</string>
<string name="lockscreen_emergency_call" msgid="5347633784401285225">"Appel d\'urgence"</string>
@@ -635,8 +637,8 @@
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="3514742106066877476">"Vous avez mal reproduit le schéma de déverrouillage <xliff:g id="NUMBER_0">%d</xliff:g> fois. "\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="4906034376425175381">"Vous avez saisi un mot de passe incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. "\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6827749231465145590">"Vous avez saisi un code PIN incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. "\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="8687762517114904651">"Vous avez saisi un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez débloquer votre tablette à l\'aide de votre identifiant Google."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="3351013842320127827">"Vous avez mal saisi le schéma de déverrouillage <xliff:g id="NUMBER_0">%d</xliff:g> fois. Au bout de <xliff:g id="NUMBER_1">%d</xliff:g> tentatives supplémentaires, vous devrez débloquer votre téléphone à l\'aide de votre identifiant Google."\n\n"Merci de réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="8687762517114904651">"Vous avez saisi un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre tablette à l\'aide de votre identifiant Google."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="3351013842320127827">"Vous avez mal saisi le schéma de déverrouillage <xliff:g id="NUMBER_0">%d</xliff:g> fois. Au bout de <xliff:g id="NUMBER_1">%d</xliff:g> tentatives supplémentaires, vous devrez déverrouiller votre téléphone à l\'aide de votre identifiant Google."\n\n"Merci de réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"Réessayez dans <xliff:g id="NUMBER">%d</xliff:g> secondes."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Schéma oublié ?"</string>
<string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Déverrouillage du compte"</string>
@@ -648,7 +650,7 @@
<string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Nom d\'utilisateur ou mot de passe incorrect."</string>
<string name="lockscreen_glogin_account_recovery_hint" msgid="8253152905532900548">"Vous avez oublié votre nom d\'utilisateur ou votre mot de passe ?"\n"Accédez à la page "<b>"google.com/accounts/recovery"</b></string>
<string name="lockscreen_glogin_checking_password" msgid="6758890536332363322">"Vérification..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"Débloquer"</string>
+ <string name="lockscreen_unlock_label" msgid="737440483220667054">"Déverrouiller"</string>
<string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Son activé"</string>
<string name="lockscreen_sound_off_label" msgid="996822825154319026">"Son désactivé"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
@@ -674,8 +676,8 @@
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lire l\'historique et les favoris du navigateur"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Autorise l\'application à lire toutes les URL auxquelles le navigateur a accédé et tous ses favoris."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"écrire dans l\'historique et les favoris du navigateur"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="7193514090469945307">"Permet à une application de modifier l\'historique du navigateur ou les favoris stockés sur votre tablette. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Autorise une application à modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Des applications malveillantes peuvent utiliser cette fonction pour effacer ou modifier les données de votre navigateur."</string>
+ <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="7193514090469945307">"Permet à une application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre tablette. Des applications malveillantes peuvent exploiter cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string>
+ <string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permet à une application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Des applications malveillantes peuvent exploiter cette fonction pour effacer ou modifier les données de votre navigateur."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"régler le réveil"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permet à l\'application de définir une alarme dans un utilitaire faisant office de réveil. Certains réveils risquent ne pas prendre en charge cette fonctionnalité."</string>
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifier les autorisations de géolocalisation du navigateur"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utiliser cette application par défaut pour cette action"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Effacer les paramètres par défaut dans les Paramètres de page d\'accueil &gt; Applications &gt; Gérer les applications."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Sélectionner une action"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Aucune application ne peut effectuer cette action."</string>
<string name="aerr_title" msgid="653922989522758100">"Désolé !"</string>
<string name="aerr_application" msgid="4683614104336409186">"Fermeture soudaine de l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> (du processus <xliff:g id="PROCESS">%2$s</xliff:g>). Merci de réessayer."</string>
@@ -912,22 +916,22 @@
<string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Recherche d\'erreurs"</string>
<string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Mémoire de stockage USB vide"</string>
<string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Carte SD vide"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="8623130522556087311">"Le stockage USB est vide ou son système de fichiers n\'est pas pris en charge."</string>
+ <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="8623130522556087311">"La mémoire de stockage USB est vide ou son système de fichiers n\'est pas pris en charge."</string>
<string name="ext_media_nofs_notification_message" product="default" msgid="3817704088027829380">"La carte SD est vide ou son système de fichiers n\'est pas pris en charge."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Stockage USB endommagé"</string>
+ <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Mémoire de stockage USB endommagée"</string>
<string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Carte SD endommagée"</string>
<string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="529021299294450667">"La mémoire de stockage USB est endommagée. Un reformatage est peut-être nécessaire."</string>
<string name="ext_media_unmountable_notification_message" product="default" msgid="6902531775948238989">"La carte SD est endommagée. Vous devrez peut-être la reformater."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"Mémoire USB retirée inopinément"</string>
+ <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"Mémoire de stockage USB retirée inopinément"</string>
<string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"Carte SD retirée inopinément"</string>
<string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Désinstaller la mémoire de stockage USB avant de la retirer pour éviter toute perte de données."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Désactiver la carte SD avant de la retirer pour éviter toute perte de données."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"Retirez la mémoire USB en toute sécurité."</string>
+ <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Désinstaller la carte SD avant de la retirer pour éviter toute perte de données."</string>
+ <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"La mémoire de stockage USB peut être retirée en toute sécurité."</string>
<string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"La carte SD peut être retirée en toute sécurité"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"La mémoire de stockage USB peut être retirée en toute sécurité."</string>
+ <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Vous pouvez retirer la mémoire de stockage USB en toute sécurité."</string>
<string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Vous pouvez retirer la carte SD en toute sécurité."</string>
<string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Mémoire de stockage USB retirée"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"Carte SD manquante"</string>
+ <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"Carte SD retirée"</string>
<string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"Mémoire de stockage USB retirée. Insérez un nouveau support."</string>
<string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"La carte SD a été retirée. Insérez-en une autre."</string>
<string name="activity_list_empty" msgid="4168820609403385789">"Aucune activité correspondante trouvée"</string>
@@ -988,7 +992,7 @@
<string name="action_mode_done" msgid="7217581640461922289">"OK"</string>
<string name="progress_unmounting" product="nosdcard" msgid="535863554318797377">"Désinstallation de la mémoire de stockage USB..."</string>
<string name="progress_unmounting" product="default" msgid="5556813978958789471">"Désinstallation de la carte SD..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4183664626203056915">"Effacement de la mémoire de stockage USB..."</string>
+ <string name="progress_erasing" product="nosdcard" msgid="4183664626203056915">"Effacement de la mémoire de stockage USB..."</string>
<string name="progress_erasing" product="default" msgid="2115214724367534095">"Effacement de la carte SD..."</string>
<string name="format_error" product="nosdcard" msgid="4320339096529911637">"Impossible d\'effacer la mémoire de stockage USB"</string>
<string name="format_error" product="default" msgid="1343380371925238343">"Impossible d\'effacer la carte SD"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 2fd6d19..cd69188 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Aplikaciji omogućuje nadzor nad vibracijom."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"nadzor bljeskalice"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Aplikaciji omogućuje nadzor nad bljeskalicom."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"pristupi USB uređajima"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Omogućuje aplikaciji pristup USB uređajima."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"Primjena MTP protokola"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Omogućuje pristup upravljačkom programu jezgre MTP-a radi implementacije MTP USB protokola."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testiranje hardvera"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Koristi se kao zadana postavka za ovu lokaciju."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Izbrišite zadane postavke u izborniku Početne postavke &gt; Aplikacije &gt; Upravljanje aplikacijama."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Odaberite radnju"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Tu radnju ne može izvesti nijedna aplikacija."</string>
<string name="aerr_title" msgid="653922989522758100">"Žao nam je."</string>
<string name="aerr_application" msgid="4683614104336409186">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (postupak <xliff:g id="PROCESS">%2$s</xliff:g>) neočekivano je zaustavljen. Pokušajte ponovo."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index aa4af42..c2a976f 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Lehetővé teszi az alkalmazás számára a rezgés vezérlését."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"vaku vezérlése"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Lehetővé teszi az alkalmazás számára a vaku vezérlését."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"USB-eszközök elérése"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Lehetővé teszi az alkalmazások számára az USB-eszközök elérését."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTP-protokoll megvalósítása"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Hozzáférést biztosít a kernel MTP illesztőprogramjához az MTP USB-protokoll megvalósításának céljából."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"hardver tesztelése"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Ez legyen az alapértelmezett program ehhez a művelethez."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Az alapértelmezés törlése a Főoldal beállításai &gt; Alkalmazások &gt; Alkalmazások kezelése menüben lehetséges."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Válasszon műveletet"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Egyik alkalmazás sem tudja végrehajtani ezt a műveletet."</string>
<string name="aerr_title" msgid="653922989522758100">"Sajnáljuk!"</string>
<string name="aerr_application" msgid="4683614104336409186">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás <xliff:g id="PROCESS">%2$s</xliff:g> folyamata váratlanul leállt. Kérjük, próbálja újra."</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index eb14169..19a5cc4 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Mengizinkan aplikasi mengontrol penggetar."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"mengontrol lampu senter"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Mengizinkan aplikasi mengontrol lampu senter."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"akses perangkat USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Mengizinkan aplikasi untuk perangkat USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementasikan protokol MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Izinkan akses pada driver MTP kernel untuk mengimplementasikan protokol USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"uji perangkat keras"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Gunakan secara bawaan untuk tindakan ini."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Bersihkan bawaan pada Setelan Beranda &gt; Aplikasi &gt; Kelola aplikasi."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Pilih tindakan"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Tidak ada aplikasi dapat melakukan tindakan ini."</string>
<string name="aerr_title" msgid="653922989522758100">"Maaf!"</string>
<string name="aerr_application" msgid="4683614104336409186">"<xliff:g id="APPLICATION">%1$s</xliff:g> aplikasi (<xliff:g id="PROCESS">%2$s</xliff:g> proses) berhenti tiba-tiba. Harap coba lagi."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 1507467..83da3be 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Consente all\'applicazione di controllare la vibrazione."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controllo flash"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Consente all\'applicazione di controllare il flash."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"accesso a dispositivi USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Consente all\'applicazione di accedere ai dispositivi USB"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementa protocollo MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Consente di accedere al driver MTP del kernel per implementare il protocollo USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"esecuzione test hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Usa come predefinita per questa azione."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Cancella predefinita in Home &gt; Impostazioni &gt; Applicazioni &gt; Gestisci applicazioni."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Seleziona un\'azione"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Nessuna applicazione è in grado di svolgere questa azione."</string>
<string name="aerr_title" msgid="653922989522758100">"Spiacenti."</string>
<string name="aerr_application" msgid="4683614104336409186">"Interruzione imprevista dell\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>). Riprova."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 7aa7b30..2ee3b7c 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"מאפשר ליישום לשלוט ברטט."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"שליטה בפנס"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"מאפשר ליישום לשלוט בפנס."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"גישה להתקני USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"מאפשר ליישום גישה להתקני USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"יישם פרוטוקול MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"מאפשר גישה למנהל התקן MTP של הליבה כדי ליישם פרוטוקול USB של MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"בדוק חומרה"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"השתמש כברירת מחדל עבור פעולה זו."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"נקה את ברירת המחדל ב\'הגדרות דף הבית\' &gt; \'יישומים\' &gt; \'נהל יישומים\'."</string>
<string name="chooseActivity" msgid="1009246475582238425">"בחר פעולה"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"אין יישומים שיכולים לבצע פעולה זו."</string>
<string name="aerr_title" msgid="653922989522758100">"מצטערים!"</string>
<string name="aerr_application" msgid="4683614104336409186">"היישום <xliff:g id="APPLICATION">%1$s</xliff:g> (תהליך <xliff:g id="PROCESS">%2$s</xliff:g>) הופסק באופן לא צפוי. נסה שוב."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index af2e4d4..04ee3a5 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"バイブレーションの制御をアプリケーションに許可します。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ライトのコントロール"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"ライトの制御をアプリケーションに許可します。"</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"USBデバイスへのアクセス"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"USBデバイスへのアクセスをアプリケーションに許可します。"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTPプロトコルの実装"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"カーネルMTPドライバにアクセスしてMTP USBプロトコルを実装することを許可します。"</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"ハードウェアのテスト"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"常にこの操作で使用する"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"ホームの[設定]&gt;[アプリケーション]&gt;[アプリケーションの管理]でデフォルト設定をクリアします。"</string>
<string name="chooseActivity" msgid="1009246475582238425">"操作の選択"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"この操作を実行できるアプリケーションはありません。"</string>
<string name="aerr_title" msgid="653922989522758100">"エラー"</string>
<string name="aerr_application" msgid="4683614104336409186">"<xliff:g id="APPLICATION">%1$s</xliff:g>(<xliff:g id="PROCESS">%2$s</xliff:g>)が予期せず停止しました。やり直してください。"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 6d1423c..71c1b90 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"애플리케이션이 진동을 제어할 수 있도록 합니다."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"카메라 플래시 제어"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"애플리케이션이 카메라 플래시를 제어할 수 있도록 합니다."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"USB 장치 액세스"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"애플리케이션이 USB 장치에 액세스하도록 허용합니다."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTP 프로토콜 구현"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"커널 MTP 드라이버에 액세스하여 MTP USB 프로토콜을 구현할 수 있도록 허용합니다."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"하드웨어 테스트"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"이 작업에 대해 기본값으로 사용"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"홈 설정 &gt; 애플리케이션 &gt; 애플리케이션 관리에서 기본값을 지웁니다."</string>
<string name="chooseActivity" msgid="1009246475582238425">"작업 선택"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"작업을 수행할 수 있는 애플리케이션이 없습니다."</string>
<string name="aerr_title" msgid="653922989522758100">"죄송합니다."</string>
<string name="aerr_application" msgid="4683614104336409186">"<xliff:g id="APPLICATION">%1$s</xliff:g> 애플리케이션(<xliff:g id="PROCESS">%2$s</xliff:g> 프로세스)이 예상치 않게 중지되었습니다. 다시 시도해 주세요."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index b014815..32f2bf7 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Leidžia programai valdyti vibratorių."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"valdyti šviesos signalą"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Leidžia programai valdyti šviesos signalą."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"pasiekti USB įrenginius"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Leidžiama programai pasiekti USB įrenginius."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"taikyti MTP protokolą"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Leidžiama prieiga prie pagrindinės MTP tvarkyklės taikyti MTP USB protokolą."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"bandyti aparatinę įrangą"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Šiam veiksmui tai naudoti pagal numatytuosius nustatymus."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Išvalykite numatytuosius nustatymus apsilankę „Pagrindiniai nustatymai“ &gt; „Programos“ &gt; „Valdyti programas“."</string>
<string name="chooseActivity" msgid="1009246475582238425">"pasirinkti veiksmą"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Šio veiksmo negali atlikti jokios programos."</string>
<string name="aerr_title" msgid="653922989522758100">"Apgailestaujame!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Programa <xliff:g id="APPLICATION">%1$s</xliff:g> (<xliff:g id="PROCESS">%2$s</xliff:g> procesas) netikėtai sustojo. Bandykite dar kartą."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 3f69434..77fb533 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Ļauj lietojumprogrammai kontrolēt vibrozvanu."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolēt uzliesmojumu"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Ļauj lietojumprogrammai kontrolēt uzliesmojumu."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"piekļuve USB ierīcēm"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Ļauj lietojumprogrammai piekļūt USB ierīcēm."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"Ieviests MTP protokols"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Ļauj piekļūt kodola MTP dzinim, lai ieviestu MTP USB protokolu."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"pārbaudīt aparatūru"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Pēc noklusējuma izmantot šai darbībai."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Notīriet noklusējumu šeit: Sākuma iestatījumi &gt; Lietojumprogrammas &gt; Lietojumprogrammu pārvaldība."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Atlasiet darbību"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Šo darbību nevar veikt neviena lietojumprogramma."</string>
<string name="aerr_title" msgid="653922989522758100">"Atvainojiet!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Lietojumprogrammas <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) darbība neparedzēti tika apturēta. Lūdzu, mēģiniet vēlreiz."</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 09a2cd4..e010d7a 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Lar applikasjonen kontrollere vibratoren."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrollere lommelykten"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Lar applikasjonen kontrollere lommelykten."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"tilgang til USB-enheter"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Tillater programmet å få tilgang til USB-enheter."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementer MTP-protokoll"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Tillater tilgang til kjerne-MTP-driver for implementering av MTP USB-protokollen."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"teste maskinvare"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Bruk som standardvalg."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Fjern standardvalg i Innstillinger &gt; Applikasjoner &gt; Installerte applikasjoner."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Velg en aktivitet"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Ingen applikasjoner kan gjøre dette."</string>
<string name="aerr_title" msgid="653922989522758100">"Beklager!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Applikasjonen <xliff:g id="APPLICATION">%1$s</xliff:g> (prosess <xliff:g id="PROCESS">%2$s</xliff:g>) stoppet uventet. Prøv igjen."</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 85a7a2d..cc24b00 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Hiermee kan de app de trilstand beheren."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"zaklamp bedienen"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Hiermee kan de app de zaklamp bedienen."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"toegang krijgen tot USB-apparaten"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Hiermee kan de app toegang krijgen tot USB-apparaten."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTP-protocol implementeren"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Staat toegang tot de kernel van de MTP-driver toe voor het implementeren van het MTP-USB-protocol."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"hardware testen"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Standaard gebruiken voor deze actie."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Wis standaardinstelling via startscherm: \'Instellingen\' &gt; \'Toepassingen\' &gt; \'Toepassingen beheren\'."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Een actie selecteren"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Geen enkele app kan deze actie uitvoeren."</string>
<string name="aerr_title" msgid="653922989522758100">"Helaas!"</string>
<string name="aerr_application" msgid="4683614104336409186">"De app <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) is onverwachts gestopt. Probeer het opnieuw."</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 99f723c..5ee4216 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Pozwala aplikacjom na kontrolowanie wibracji."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolowanie latarki"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Pozwala aplikacji kontrolować latarkę."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"dostęp do urządzeń USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Zezwala aplikacji na dostęp do urządzeń USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementowanie protokołu MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Zezwala na dostęp do sterownika MTP jądra w celu implementacji protokołu USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testowanie sprzętu"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Używaj domyślnie dla tej czynności."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Wyczyść domyślne w: Ustawienia strony głównej &gt; Aplikacje &gt; Zarządzaj aplikacjami."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Wybierz czynność"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Żadna z aplikacji nie może wykonać tej czynności."</string>
<string name="aerr_title" msgid="653922989522758100">"Przepraszamy!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Aplikacja <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) została niespodziewanie zatrzymana. Spróbuj ponownie."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 9c069c4..855b966 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permite à aplicação controlar o vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permite à aplicação controlar a lanterna."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"aceder a dispositivos USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permite à aplicação aceder a dispositivos USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementar protocolo MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permite o acesso ao controlador MTP de kernel para implementar o protocolo MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testar hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utilizar por predefinição para esta acção."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Limpar predefinição em Definições iniciais &gt; Aplicações &gt; Gerir aplicações."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Seleccionar uma acção"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Nenhuma aplicação pode efectuar esta acção."</string>
<string name="aerr_title" msgid="653922989522758100">"Lamentamos."</string>
<string name="aerr_application" msgid="4683614104336409186">"A aplicação <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) parou de forma inesperada. Tente novamente."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index e8b230f..ba3600e 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permite que o aplicativo controle o vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permite que o aplicativo controle a lanterna."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"acessar dispositivos USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permitir que o aplicativo acesse dispositivos USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementar protocolo MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permite acesso ao driver MTP do núcleo para implementar o protocolo USB MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testar hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Usar como padrão para esta ação."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Limpar o padrão em Configurações da página inicial &gt; Aplicativos &gt; Gerenciar aplicativos."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Selecionar uma ação"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Nenhum aplicativo pode realizar esta ação."</string>
<string name="aerr_title" msgid="653922989522758100">"Desculpe!"</string>
<string name="aerr_application" msgid="4683614104336409186">"O aplicativo <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) parou inesperadamente. Tente novamente."</string>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index f3073bd..bc1e133 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -367,8 +367,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permetta a l\'applicaziun da controllar la vibraziun."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controllar la glischina"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permetta a l\'applicaziun da controllar la glischina."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"acceder ad apparats USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permetta a l\'applicaziun dad acceder als apparats periferics USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<!-- no translation found for permlab_accessMtp (4953468676795917042) -->
<skip />
<!-- no translation found for permdesc_accessMtp (6532961200486791570) -->
@@ -865,6 +867,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Utilisar questa applicaziun sco standard per questa acziun."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Stizzar ils parameters da standard en Parameters da la pagina da partenza &gt; Applicaziuns &gt; Administrar las applicaziuns."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Tscherner ina acziun"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Nagina applicaziun po exequir questa acziun."</string>
<string name="aerr_title" msgid="653922989522758100">"Perstgisai!"</string>
<string name="aerr_application" msgid="4683614104336409186">"L\'applicaziun <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) è vegnida serrada nunspetgadamain. Empruvai anc ina giada."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 217c965..4d29c25 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Permite aplicaţiei să controleze mecanismul de vibrare."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"control lanternă"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Permite aplicaţiei să controleze lanterna."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"accesare dispozitive USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Permite aplicaţiei să acceseze dispozitive USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementare protocol MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Permite accesul la driverul MTP al nucleului pentru a implementa protocolul USB pentru MTP."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testare hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Se utilizează în mod prestabilit pentru această acţiune."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Ştergeţi setările prestabilite din Setări pagină de pornire &gt; Aplicaţii &gt; Gestionare aplicaţii."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Selectaţi o acţiune"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Această acţiune nu poate fi efectuată de nicio aplicaţie."</string>
<string name="aerr_title" msgid="653922989522758100">"Ne pare rău!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Aplicaţia <xliff:g id="APPLICATION">%1$s</xliff:g> (procesul <xliff:g id="PROCESS">%2$s</xliff:g>) s-a oprit în mod neaşteptat. Încercaţi din nou."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 405fbc0..541f414 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Позволяет приложению управлять виброзвонком."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"управлять вспышкой"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Позволяет приложению управлять вспышкой."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"доступ к USB-устройствам"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Позволяет приложению получать доступ к USB-устройствам."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"Реализовать протокол MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Разрешает доступ к драйверу основного устройства MTP для реализации протокола MTP USB"</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"проверять аппаратное обеспечение"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"По умолчанию для этого действия"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Удалить настройки по умолчанию: главный экран &gt; \"Настройки\" &gt; \"Приложения\" &gt; \"Управление приложениями\"."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Выберите действие"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Это действие не может выполнять ни одно приложение."</string>
<string name="aerr_title" msgid="653922989522758100">"Ошибка приложения!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Произошла неожиданная остановка приложения <xliff:g id="APPLICATION">%1$s</xliff:g> (процесс <xliff:g id="PROCESS">%2$s</xliff:g>). Повторите попытку."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 9605af2..a97876d 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Umožňuje aplikácii ovládať vibrácie."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ovládanie kontrolky"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Umožňuje aplikácii ovládať kontrolku."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"prístup k zariadeniam USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Umožní aplikácii prístup k zariadeniam USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementovať protokol MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Povoľuje prístup k ovládaču kernel MTP na implementáciu protokolu MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testovanie hardvéru"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Použiť ako predvolené nastavenie pre túto akciu."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Vymazanie predvolených hodnôt v časti Nastavenia plochy &gt; Aplikácie &gt; Správa aplikácií."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Vyberte akciu"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Túto akciu nemôžu vykonávať žiadne aplikácie."</string>
<string name="aerr_title" msgid="653922989522758100">"Je nám ľúto!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) bola neočakávane zastavená. Skúste to znova."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index a460627..4e9a739 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Programu dovoljuje nadzor vibriranja."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"nadzor svetilke"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Programu dovoljuje nadzor svetilke."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"dostop do naprav USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Programu omogoča dostop do naprav USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"uveljavitev protokola MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Omogoča dostop do gonilnika jedra MTP za uveljavitev protokola MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"preskušanje strojne opreme"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Privzeta uporaba za to dejanje."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Počistite privzete nastavitve v razdelku Osnovne nastavitve &gt; Programi &gt; Upravljanje programov."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Izberite dejanje"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Tega dejanja ne more izvesti noben program."</string>
<string name="aerr_title" msgid="653922989522758100">"Oprostite."</string>
<string name="aerr_application" msgid="4683614104336409186">"Program <xliff:g id="APPLICATION">%1$s</xliff:g> (postopek <xliff:g id="PROCESS">%2$s</xliff:g>) se je nepričakovano ustavil. Poskusite znova."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index a6f1e5f..7377cd9 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Омогућава да апликација контролише вибрације."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контрола осветљења"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Омогућава да апликација контролише осветљење."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"приступ USB уређајима"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Омогућава апликацији приступ USB уређајима."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"примени MTP протокол"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Омогућава приступ основном MTP управљачком програму ради примене MTP USB протокола."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"тестирање хардвера"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Подразумевано користи за ову радњу."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Обришите подразумевана подешавања у оквиру ставки Подешавања почетне странице &gt; Апликације &gt; Управљање апликацијама."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Избор радње"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Ниједна апликација не може да изврши ову радњу."</string>
<string name="aerr_title" msgid="653922989522758100">"Жао нам је!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Апликација <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) је неочекивано заустављена. Покушајте поново."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 1c234c2..5c1c3d8 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Tillåter att programmet styr vibratorn."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"styra lampa"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Tillåter att programmet styr lampan."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"åtkomst till USB-enheter"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Tillåter att programmet använder USB-enheter."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"implementera MTP-protokoll"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Ger åtkomst till MTP-kerneldrivrutinen för att implementera MTP/USB-protokollet."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"testa maskinvara"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Använd som standard för denna åtgärd."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Rensa standardinställning i Startinställningar &gt; Appar &gt; Hantera appar."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Välj en åtgärd"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Inga appar kan utföra den här åtgärden."</string>
<string name="aerr_title" msgid="653922989522758100">"Tyvärr!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Processen <xliff:g id="PROCESS">%2$s</xliff:g> för programmet <xliff:g id="APPLICATION">%1$s</xliff:g> stoppades oväntat. Försök igen."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 90747d7..cebae1c 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"อนุญาตให้แอปพลิเคชันควบคุมการสั่นเตือน"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ควบคุมไฟฉาย"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"อนุญาตให้แอปพลิเคชันควบคุมไฟฉาย"</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"เข้าถึงอุปกรณ์ USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"อนุญาตให้แอปพลิเคชันเข้าถึงอุปกรณ์ USB"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"ใช้โปรโตคอล MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"อนุญาตการเข้าถึงไดรเวอร์ Kernel MTP เพื่อใช้โปรโตคอล MTP USB"</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"ทดสอบฮาร์ดแวร์"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"ใช้ค่าเริ่มต้นสำหรับการทำงานนี้"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"ล้างข้อมูลค่าเริ่มต้นในการตั้งค่าหน้าแรก &gt; แอปพลิเคชัน &gt; จัดการแอปพลิเคชัน"</string>
<string name="chooseActivity" msgid="1009246475582238425">"เลือกการทำงาน"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"ไม่มีแอปพลิเคชันใดทำงานนี้ได้"</string>
<string name="aerr_title" msgid="653922989522758100">"ขออภัย!"</string>
<string name="aerr_application" msgid="4683614104336409186">"แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> (กระบวนการ <xliff:g id="PROCESS">%2$s</xliff:g> หยุดทำงานโดยไม่คาดหมาย โปรดลองอีกครั้ง"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 713fca9..a9a90ee 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Pinapayagan ang application na kontrolin ang vibrator."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolin ang flashlight"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Pinapayagan ang application na kontrolin ang flashlight."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"i-access ang mga USB device"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Pinapayagan ang application na i-access ang mga USB device."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"ipatupad ang MTP protocol"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Pinapayagan ang access sa kernel MTP driver upang maipatupad ang MTP USB protocol."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"subukan ang hardware"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Gamitin bilang default para sa pagkilos na ito."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"I-clear ang default sa Mga Setting ng Home &gt; Mga Application &gt; Pamahalaan ang mga application."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Pumili ng pagkilos"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Walang mga application ang makakapagsagawa ng pagkilos na ito."</string>
<string name="aerr_title" msgid="653922989522758100">"Paumanhin!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Hindi inaasahang humito ang <xliff:g id="APPLICATION">%1$s</xliff:g> (proseso <xliff:g id="PROCESS">%2$s</xliff:g>) ng application. Pakisubukang muli."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index d7a5008..066aae9 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Uygulamanın titreşimi denetlemesine izin verir."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"flaşı denetle"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Uygulamaların flaş ışığını denetlemesine izin verir."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"USB cihazlarına erişme"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Uygulamaların USB cihazlarına erişimine izin verir"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"MTP protokolünü uygula"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB protokolünü uygulamak için çekirdekteki MTP sürücüsüne erişim izni ver."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"donanımı test et"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Varsayılan olarak bu işlem için kullan."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Giriş Ayarları &gt; Uygulamalar &gt; Uygulamaları yönet\'te varsayılanı temizleyin."</string>
<string name="chooseActivity" msgid="1009246475582238425">"İşlem seç"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Hiçbir uygulama bu işlemi yapamaz."</string>
<string name="aerr_title" msgid="653922989522758100">"Üzgünüz!"</string>
<string name="aerr_application" msgid="4683614104336409186">"<xliff:g id="APPLICATION">%1$s</xliff:g> uygulaması (<xliff:g id="PROCESS">%2$s</xliff:g> işlemi) beklenmedik biçimde durdu. Lütfen yeniden deneyin."</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 7c329c5..bdfb444 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Дозволяє програмі контролювати вібросигнал."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контр. блим. світло"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Дозволяє програмі контролювати світловий сигнал."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"отр.дост.до прист.USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Дозволяє програмі отрим. доступ до пристр. USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"впроваджувати протокол MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Дозволяє доступ до драйвера ядра MTP для впровадження протоколу MTP (USB)."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"тест-ти обладн."</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Використ. за умовч. для цієї дії."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Очист. налашт. за умовч. у Дом. налашт. &gt; Програми &gt; Керув. програмами."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Виберіть дію"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Жодна програма не може виконати цю дію."</string>
<string name="aerr_title" msgid="653922989522758100">"Помилка!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Програма <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) несподівано зупинилася. Спробуйте ще."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 49c9e44..8019069 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"Cho phép ứng dụng kiểm soát bộ rung."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kiểm soát đèn nháy"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"Cho phép ứng dụng kiểm soát đèn nháy."</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"truy cập bộ nhớ USB"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"Cho phép ứng dụng truy cập thiết bị USB."</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"triển khai giao thức MTP"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"Cho phép truy cập tới trình điều khiển MTP nhân hệ điều hành để triển khai giao thức MTP USB."</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"kiểm tra phần cứng"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"Sử dụng theo mặc định đối với tác vụ này."</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"Xoá mặc định trong Cài đặt Màn hình trang chủ &gt; Ứng dụng&gt; Quản lý ứng dụng."</string>
<string name="chooseActivity" msgid="1009246475582238425">"Chọn tác vụ"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"Không ứng dụng nào có thể thực hiện tác vụ này."</string>
<string name="aerr_title" msgid="653922989522758100">"Rất tiếc!"</string>
<string name="aerr_application" msgid="4683614104336409186">"Ứng dụng <xliff:g id="APPLICATION">%1$s</xliff:g> (quá trình <xliff:g id="PROCESS">%2$s</xliff:g>) đã dừng đột ngột. Vui lòng thử lại."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 640b9bc..072dcc1 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"允许应用程序控制振动器。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"控制闪光灯"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"允许应用程序控制闪光灯。"</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"访问 USB 设备"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"允许应用程序访问 USB 设备。"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"应用 MTP 协议"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"允许访问内核 MTP 驱动程序,以便应用 MTP USB 协议。"</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"测试硬件"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"默认使用此方式发送。"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"通过主屏幕上的“设置”&gt;“应用程序”&gt;“管理应用程序”清除默认设置。"</string>
<string name="chooseActivity" msgid="1009246475582238425">"选择一项操作"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"没有应用程序可执行此操作。"</string>
<string name="aerr_title" msgid="653922989522758100">"很抱歉!"</string>
<string name="aerr_application" msgid="4683614104336409186">"应用程序 <xliff:g id="APPLICATION">%1$s</xliff:g>(进程:<xliff:g id="PROCESS">%2$s</xliff:g>)意外停止,请重试。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index fe1d78d..ec515bc 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -361,8 +361,10 @@
<string name="permdesc_vibrate" msgid="2886677177257789187">"允許應用程式控制震動。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"控制閃光燈"</string>
<string name="permdesc_flashlight" msgid="6433045942283802309">"允許應用程式控制閃光燈。"</string>
- <string name="permlab_accessUsb" msgid="7362327818655760496">"存取 USB 裝置"</string>
- <string name="permdesc_accessUsb" msgid="2414271762914049292">"允許應用程式存取 USB 裝置。"</string>
+ <!-- no translation found for permlab_manageUsb (1113453430645402723) -->
+ <skip />
+ <!-- no translation found for permdesc_manageUsb (6148489202092166164) -->
+ <skip />
<string name="permlab_accessMtp" msgid="4953468676795917042">"執行 MTP 通訊協定"</string>
<string name="permdesc_accessMtp" msgid="6532961200486791570">"允許存取核心 MTP 驅動程式,以執行 MTP USB 通訊協定。"</string>
<string name="permlab_hardware_test" msgid="4148290860400659146">"測試硬體"</string>
@@ -814,6 +816,8 @@
<string name="alwaysUse" msgid="4583018368000610438">"以此為本操作預設值。"</string>
<string name="clearDefaultHintMsg" msgid="4815455344600932173">"清除首頁設定 (應用程式) 管理應用程式的預設值。"</string>
<string name="chooseActivity" msgid="1009246475582238425">"選取一項操作"</string>
+ <!-- no translation found for chooseUsbActivity (7892597146032121735) -->
+ <skip />
<string name="noApplications" msgid="1691104391758345586">"沒有應用程式可執行此項操作。"</string>
<string name="aerr_title" msgid="653922989522758100">"很抱歉!"</string>
<string name="aerr_application" msgid="4683614104336409186">"<xliff:g id="APPLICATION">%1$s</xliff:g> 應用程式 (程序:<xliff:g id="PROCESS">%2$s</xliff:g>) 異常終止。請再試一次。"</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index d3b1062..f363bd3 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -610,6 +610,12 @@
<attr name="actionModeCopyDrawable" format="reference" />
<!-- Drawable to use for the Paste action button in Contextual Action Bar -->
<attr name="actionModePasteDrawable" format="reference" />
+ <!-- Drawable to use for the Share action button in WebView selection action modes -->
+ <attr name="actionModeShareDrawable" format="reference" />
+ <!-- Drawable to use for the Find action button in WebView selection action modes -->
+ <attr name="actionModeFindDrawable" format="reference" />
+ <!-- Drawable to use for the Web Search action button in WebView selection action modes -->
+ <attr name="actionModeWebSearchDrawable" format="reference" />
<!-- PopupWindow style to use for action modes when showing as a window overlay. -->
<attr name="actionModePopupWindowStyle" format="reference" />
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c815758..e46eecc 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -51,11 +51,6 @@
manager will disable alpha trasformation in animations where not
strictly needed. -->
<bool name="config_sf_limitedAlpha">false</bool>
-
- <!-- Default value used to block data calls if ims is not
- connected. If you use the ims apn DCT will block
- any other apn from connecting until ims apn is connected-->
- <bool name="ImsConnectedDefaultValue">false</bool>
<!-- Flag indicating whether the surface flinger is inefficient
at performing a blur. Used by parts of the UI to turn off
@@ -138,9 +133,6 @@
<item>"mobile_mms,2,0,2"</item>
<item>"mobile_supl,3,0,2"</item>
<item>"mobile_hipri,5,0,3"</item>
- <item>"mobile_fota,8,0,2"</item>
- <item>"mobile_ims,9,0,2"</item>
- <item>"mobile_cbs,10,0,2"</item>
</string-array>
<!-- This string array should be overridden by the device to present a list of radio
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 72f1801..41ee55a 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1611,6 +1611,8 @@
<item name="android:thumb">@android:drawable/scrubber_control_selector_holo</item>
<item name="android:thumbOffset">16dip</item>
<item name="android:focusable">true</item>
+ <item name="android:paddingLeft">16dip</item>
+ <item name="android:paddingRight">16dip</item>
</style>
<style name="Widget.Holo.RatingBar" parent="Widget.RatingBar">
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 82164e5..b7cc7f9 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -263,6 +263,9 @@
<item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_dark</item>
<item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_dark</item>
<item name="actionModePasteDrawable">@android:drawable/ic_menu_paste_dark</item>
+ <item name="actionModeShareDrawable">@android:drawable/ic_menu_share</item>
+ <item name="actionModeFindDrawable">@android:drawable/ic_menu_find</item>
+ <item name="actionModeWebSearchDrawable">@android:drawable/ic_menu_search</item>
<item name="actionBarTabStyle">@style/Widget.ActionBarView_TabView</item>
<item name="actionBarTabBarStyle">@style/Widget.ActionBarView_TabBar</item>
<item name="actionBarTabTextStyle">@style/Widget.ActionBarView_TabText</item>
@@ -383,6 +386,9 @@
<item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_light</item>
<item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_light</item>
<item name="actionModePasteDrawable">@android:drawable/ic_menu_paste_light</item>
+ <item name="actionModeShareDrawable">@android:drawable/ic_menu_share_holo_light</item>
+ <item name="actionModeFindDrawable">@android:drawable/ic_menu_find_holo_light</item>
+ <item name="actionModeWebSearchDrawable">@android:drawable/ic_menu_search_holo_light</item>
<item name="actionModeBackground">@android:drawable/cab_background_light</item>
<!-- SearchView attributes -->
@@ -994,6 +1000,13 @@
<item name="actionBarSize">56dip</item>
<item name="actionModePopupWindowStyle">@android:style/Widget.Holo.PopupWindow.ActionMode</item>
+ <item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_holo_dark</item>
+ <item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_holo_dark</item>
+ <item name="actionModePasteDrawable">@android:drawable/ic_menu_paste_holo_dark</item>
+ <item name="actionModeShareDrawable">@android:drawable/ic_menu_share_holo_dark</item>
+ <item name="actionModeFindDrawable">@android:drawable/ic_menu_find_holo_dark</item>
+ <item name="actionModeWebSearchDrawable">@android:drawable/ic_menu_search_holo_dark</item>
+
<item name="dividerVertical">?android:attr/listDivider</item>
<item name="dividerHorizontal">?android:attr/listDivider</item>
<item name="buttonBarStyle">@android:style/Holo.ButtonBar</item>
@@ -1270,6 +1283,13 @@
<item name="actionBarSize">56dip</item>
<item name="actionModePopupWindowStyle">@android:style/Widget.Holo.Light.PopupWindow.ActionMode</item>
+ <item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_holo_light</item>
+ <item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_holo_light</item>
+ <item name="actionModePasteDrawable">@android:drawable/ic_menu_paste_holo_light</item>
+ <item name="actionModeShareDrawable">@android:drawable/ic_menu_share_holo_light</item>
+ <item name="actionModeFindDrawable">@android:drawable/ic_menu_find_holo_light</item>
+ <item name="actionModeWebSearchDrawable">@android:drawable/ic_menu_search_holo_light</item>
+
<item name="dividerVertical">?android:attr/listDivider</item>
<item name="dividerHorizontal">?android:attr/listDivider</item>
<item name="buttonBarStyle">@android:style/Holo.Light.ButtonBar</item>
diff --git a/core/tests/systemproperties/Android.mk b/core/tests/systemproperties/Android.mk
new file mode 100644
index 0000000..05216e0
--- /dev/null
+++ b/core/tests/systemproperties/Android.mk
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+# We only want this apk build for tests.
+LOCAL_MODULE_TAGS := tests
+
+# Include all test java files.
+LOCAL_SRC_FILES := \
+ $(call all-java-files-under, src)
+
+LOCAL_DX_FLAGS := --core-library
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests-supportlib android-common frameworks-core-util-lib
+LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_PACKAGE_NAME := FrameworksCoreSystemPropertiesTests
+
+LOCAL_CERTIFICATE := platform
+
+include $(BUILD_PACKAGE)
diff --git a/core/tests/systemproperties/AndroidManifest.xml b/core/tests/systemproperties/AndroidManifest.xml
new file mode 100644
index 0000000..ad0abf4
--- /dev/null
+++ b/core/tests/systemproperties/AndroidManifest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ android:installLocation="internalOnly"
+ package="com.android.frameworks.coretests.systemproperties"
+ android:sharedUserId="android.uid.system">
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation android:name="android.test.InstrumentationTestRunner"
+ android:targetPackage="com.android.frameworks.coretests"
+ android:label="Frameworks Core Tests" />
+
+</manifest>
diff --git a/core/tests/systemproperties/run_core_systemproperties_test.sh b/core/tests/systemproperties/run_core_systemproperties_test.sh
new file mode 100755
index 0000000..48880f3
--- /dev/null
+++ b/core/tests/systemproperties/run_core_systemproperties_test.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --rebuild ) echo Rebuild && rebuild=true;;
+ * ) com_opts+=($1);;
+ esac
+ shift
+done
+
+if [[ -z $ANDROID_PRODUCT_OUT && $rebuilld == true ]]; then
+ echo You must lunch before running this test.
+ exit 0
+fi
+
+if [[ $rebuild == true ]]; then
+ make -j4 FrameworksCoreSystemPropertiesTests
+ TESTAPP=${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreSystemPropertiesTests.apk
+fi
+
+adb shell am instrument -w -e class android.os.SystemPropertiesTest com.android.frameworks.coretests.systemproperties/android.test.InstrumentationTestRunner
diff --git a/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java b/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java
new file mode 100644
index 0000000..243ac38
--- /dev/null
+++ b/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os;
+
+import junit.framework.TestCase;
+
+import android.os.SystemProperties;
+import android.test.suitebuilder.annotation.SmallTest;
+
+public class SystemPropertiesTest extends TestCase {
+ private static final String KEY = "sys.testkey";
+ @SmallTest
+ public void testLongSequencialProperties() throws Exception {
+ for (int i = 0; i < 100; ++i) {
+ SystemProperties.set(KEY, Long.toString(i));
+ long ret = SystemProperties.getLong(KEY, -1);
+ assertEquals(i, ret);
+ }
+ }
+
+ @SmallTest
+ public void testProperties() throws Exception {
+ String value;
+
+ SystemProperties.set(KEY, "");
+ value = SystemProperties.get(KEY, "default");
+ assertEquals("default", value);
+
+ SystemProperties.set(KEY, "SA");
+ value = SystemProperties.get(KEY, "default");
+ assertEquals("SA", value);
+
+ value = SystemProperties.get(KEY);
+ assertEquals("SA", value);
+
+ SystemProperties.set(KEY, "");
+ value = SystemProperties.get(KEY, "default");
+ assertEquals("default", value);
+
+ value = SystemProperties.get(KEY);
+ assertEquals("", value);
+ }
+}
diff --git a/docs/html/guide/topics/ui/themes.jd b/docs/html/guide/topics/ui/themes.jd
index 57c9f2e..a213bea 100644
--- a/docs/html/guide/topics/ui/themes.jd
+++ b/docs/html/guide/topics/ui/themes.jd
@@ -326,36 +326,45 @@ Manifest:</p>
&lt;activity android:theme="@style/CustomTheme">
</pre>
+
<h3 id="SelectATheme">Select a theme based on platform version</h3>
<p>Newer versions of Android have additional themes available to applications,
-and you may want to use these while running on those platforms while still being
+and you might want to use these while running on those platforms while still being
compatible with older versions. You can accomplish this through a custom theme
-that uses resource selection to switch between different parent themes.</p>
+that uses resource selection to switch between different parent themes, based on the platform
+version.</p>
<p>For example, here is the declaration for a custom theme which is simply
the standard platforms default light theme. It would go in an XML file under
<code>res/values</code> (typically <code>res/values/styles.xml</code>):
<pre>
&lt;style name="LightThemeSelector" parent="android:Theme.Light">
+ ...
&lt;/style>
</pre>
-<p>To have this theme use the newer "holo" theme when the application is running
-on {@link android.os.Build.VERSION_CODES#HONEYCOMB}, you can place another
-declaration for it in a file in <code>res/values-11</code>:</p>
+<p>To have this theme use the newer holographic theme when the application is running
+on Android 3.0 (API Level 11) or higher, you can place an alternative
+declaration for the theme in an XML file in <code>res/values-v11</code>, but make the parent theme
+the holographic theme:</p>
<pre>
&lt;style name="LightThemeSelector" parent="android:Theme.Holo.Light">
+ ...
&lt;/style>
</pre>
<p>Now use this theme like you would any other, and your application will
-automatically switch to the holo theme if running on
-{@link android.os.Build.VERSION_CODES#HONEYCOMB} or later.</p>
+automatically switch to the holographic theme if running on Android 3.0 or higher.</p>
<p>A list of the standard attributes that you can use in themes can be
found at {@link android.R.styleable#Theme R.styleable.Theme}.</p>
+<p>For more information about providing alternative resources, such as themes and layouts, based
+on the platform version or other device configurations, see the <a
+href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>
+document.</p>
+
<!-- This currently has some bugs
<h3 id="setThemeFromTheApp">Set the theme from the application</h3>
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index bb9fb78..1b10c5c 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -679,7 +679,7 @@ public class RenderScript {
/**
* Base class application should derive from for handling RS messages
- * comming from their scripts. When a script calls sendToClient the data
+ * coming from their scripts. When a script calls sendToClient the data
* fields will be filled in and then the run method called by a message
* handling thread. This will occur some time after sendToClient completes
* in the script.
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
index 58cc739..4359795 100644
--- a/graphics/java/android/renderscript/RenderScriptGL.java
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -155,7 +155,7 @@ public class RenderScriptGL extends RenderScript {
* Construct a new RenderScriptGL context.
*
* @param ctx The context.
- * @param sc The desired format of the primart rendering surface.
+ * @param sc The desired format of the primary rendering surface.
*/
public RenderScriptGL(Context ctx, SurfaceConfig sc) {
super(ctx);
diff --git a/libs/rs/Android.mk b/libs/rs/Android.mk
index 5ab4804..0836887 100644
--- a/libs/rs/Android.mk
+++ b/libs/rs/Android.mk
@@ -124,6 +124,8 @@ LOCAL_STATIC_LIBRARIES := libdex libft2
LOCAL_C_INCLUDES += external/freetype/include external/zlib dalvik
LOCAL_C_INCLUDES += frameworks/compile/libbcc/include
+LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable
+
LOCAL_LDLIBS := -lpthread -ldl
LOCAL_MODULE:= libRS
LOCAL_MODULE_TAGS := optional
@@ -132,6 +134,7 @@ include $(BUILD_SHARED_LIBRARY)
# Now build a host version for serialization
include $(CLEAR_VARS)
+LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable
LOCAL_CFLAGS += -DANDROID_RS_SERIALIZE
LOCAL_SRC_FILES:= \
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index 54dcbcb..ec03a15 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -21,8 +21,6 @@
#include <GLES/glext.h>
#endif //ANDROID_RS_SERIALIZE
-static void rsaAllocationGenerateScriptMips(RsContext con, RsAllocation va);
-
using namespace android;
using namespace android::renderscript;
@@ -602,6 +600,8 @@ void Allocation::resize2D(Context *rsc, uint32_t dimX, uint32_t dimY) {
//
#ifndef ANDROID_RS_SERIALIZE
+static void rsaAllocationGenerateScriptMips(RsContext con, RsAllocation va);
+
namespace android {
namespace renderscript {
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 2e6ea12..4a5620d 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -741,7 +741,7 @@ Context::~Context() {
mWorkers.mLaunchSignals[ct].set();
}
for (uint32_t ct = 0; ct < mWorkers.mCount; ct++) {
- int status = pthread_join(mWorkers.mThreadId[ct], &res);
+ status = pthread_join(mWorkers.mThreadId[ct], &res);
}
rsAssert(!mWorkers.mRunningCount);
diff --git a/libs/rs/rsHandcode.h b/libs/rs/rsHandcode.h
index 6f21a35..57da10a 100644
--- a/libs/rs/rsHandcode.h
+++ b/libs/rs/rsHandcode.h
@@ -4,7 +4,6 @@
static inline void rsHCAPI_ContextFinish (RsContext rsc) {
ThreadIO *io = &((Context *)rsc)->mIO;
uint32_t size = sizeof(RS_CMD_ContextFinish);
- RS_CMD_ContextFinish *cmd = static_cast<RS_CMD_ContextFinish *>(io->mToCore.reserve(size));
io->mToCore.commitSync(RS_CMD_ID_ContextFinish, size);
}
diff --git a/libs/rs/rsScript.cpp b/libs/rs/rsScript.cpp
index 9ada9c2..afee2a3 100644
--- a/libs/rs/rsScript.cpp
+++ b/libs/rs/rsScript.cpp
@@ -139,7 +139,6 @@ void rsi_ScriptSetVarD(Context *rsc, RsScript vs, uint32_t slot, double value) {
}
void rsi_ScriptSetVarV(Context *rsc, RsScript vs, uint32_t slot, const void *data, uint32_t len) {
- const float *fp = (const float *)data;
Script *s = static_cast<Script *>(vs);
s->setVar(slot, data, len);
}
diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp
index 80da8ae..7c64184 100644
--- a/libs/rs/rsScriptC_Lib.cpp
+++ b/libs/rs/rsScriptC_Lib.cpp
@@ -35,6 +35,7 @@ using namespace android::renderscript;
// Math routines
//////////////////////////////////////////////////////////////////////////////
+#if 0
static float SC_sinf_fast(float x) {
const float A = 1.0f / (2.0f * M_PI);
const float B = -16.0f;
@@ -70,6 +71,7 @@ static float SC_cosf_fast(float x) {
const float y = B * x * fabsf(x) + C * x;
return 0.2215f * (y * fabsf(y) - y) + y;
}
+#endif
static float SC_randf(float max) {
float r = (float)rand();
diff --git a/libs/rs/rsScriptC_LibCL.cpp b/libs/rs/rsScriptC_LibCL.cpp
index 57855db..8a0aa47 100644
--- a/libs/rs/rsScriptC_LibCL.cpp
+++ b/libs/rs/rsScriptC_LibCL.cpp
@@ -42,6 +42,7 @@ static float SC_mad(float v1, float v2, float v3) {
return v1 * v2 + v3;
}
+#if 0
static float SC_pown(float v, int p) {
return powf(v, (float)p);
}
@@ -49,6 +50,7 @@ static float SC_pown(float v, int p) {
static float SC_powr(float v, float p) {
return powf(v, p);
}
+#endif
float SC_rootn(float v, int r) {
return pow(v, 1.f / r);
diff --git a/libs/rs/rsScriptC_LibGL.cpp b/libs/rs/rsScriptC_LibGL.cpp
index 48a0969..15426bc 100644
--- a/libs/rs/rsScriptC_LibGL.cpp
+++ b/libs/rs/rsScriptC_LibGL.cpp
@@ -281,11 +281,13 @@ static void SC_allocationSyncAll(RsAllocation va) {
static_cast<Allocation *>(va)->syncAll(rsc, RS_ALLOCATION_USAGE_SCRIPT);
}
+#if 0
static void SC_allocationSyncAll2(RsAllocation va, RsAllocationUsageType source) {
CHECK_OBJ(va);
GET_TLS();
static_cast<Allocation *>(va)->syncAll(rsc, source);
}
+#endif
static void SC_ClearColor(float r, float g, float b, float a) {
GET_TLS();
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4g.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4g.png
deleted file mode 100644
index 84ac927..0000000
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4g.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 486dacc..2b22302 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"الإعدادات"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"وضع الطائرة"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"تأمين اتجاه الشاشة"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"كتم"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"تلقائي"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"التنبيهات"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index df6ef71..faf802b 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Самолетен режим"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Заключване на ориентацията"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"БЕЗ"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТ."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Известия"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 2993e8b..73ef49e 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configuració"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mode d\'avió"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloquejar orientació pantalla"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"Silen."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificacions"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 29ab1a7..66eecd6 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavení"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Režim V letadle"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Uzamknout orientaci obrazovky"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ZTLUM."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Oznámení"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 81122a8..15f370b 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Indstillinger"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Flytilstand"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Lås skærmretning"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"LYDLØS"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Meddelelser"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 1ea87e8..e13f723 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -34,12 +34,13 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Einstellungen"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"WLAN"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Flugmodus"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bildschirmausrichtung sperren"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"STUMM"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Benachrichtigungen"</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"Zuletzt verwendet"</string>
- <string name="recent_tasks_empty" msgid="1905484479067697884">"Keine neuen Anwendungen"</string>
+ <string name="recent_tasks_empty" msgid="1905484479067697884">"Keine zuletzt verwendeten Anwendungen"</string>
<string name="recent_tasks_app_label" msgid="3796483981246752469">"Google Apps"</string>
<string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-Tethering aktiv"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Eingabemethoden konfigurieren"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index cd412f4..069277d 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ρυθμίσεις"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Λειτουργία πτήσης"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Κλείδωμα προσανατολ. οθόνης"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ΣΙΓΑΣΗ"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ΑΥΤΟΜ."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Ειδοποιήσεις"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 2bd662b..9efd6b2 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Airplane mode"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Lock screen orientation"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUTE"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string>
diff --git a/packages/SystemUI/res/values-es-rUS-xlarge-land/strings.xml b/packages/SystemUI/res/values-es-rUS-xlarge-land/strings.xml
deleted file mode 100644
index 78a4c18..0000000
--- a/packages/SystemUI/res/values-es-rUS-xlarge-land/strings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- XL -->
- <string name="toast_rotation_locked" msgid="2686639138967158852">"La pantalla está bloqueada en orientación paisaje."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-es-rUS-xlarge-port/strings.xml b/packages/SystemUI/res/values-es-rUS-xlarge-port/strings.xml
deleted file mode 100644
index 9daef6a..0000000
--- a/packages/SystemUI/res/values-es-rUS-xlarge-port/strings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- XL -->
- <string name="toast_rotation_locked" msgid="4297721709987511908">"La pantalla está bloqueada en orientación retrato."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 2c50160..7ec089f 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configuración"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Modo avión"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloq orient de pant"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"SILENC"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificaciones"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 8d9cc5c..25465d9 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ajustes"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Modo avión"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloquear orientación pantalla"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"SILENC"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificaciones"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 1e0f1e9..4e15435 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"تنظیمات"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"حالت هواپیما"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"قفل جهت صفحه"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"بیصدا"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"خودکار"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"اعلان ها"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index e2f935a..252b97f 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Asetukset"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"WiFi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Lentokonetila"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Lukitse ruudun suunta"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ÄÄNET."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Ilmoitukset"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 9bd1886..b903452 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Paramètres"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mode Avion"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Verrouiller orientation écran"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUET"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 8034eb7..916f2c3 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Postavke"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Način rada u zrakoplovu"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Zaključaj orijentaciju zaslona"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"Bez zv."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Obavijesti"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 9a91b13..f41c89c 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Beállítások"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Repülőgép üzemmód"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Telefon tájolásának zárolása"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"NÉMÍT"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Értesítések"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 8d3cfb1..0d5b411 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Setelan"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mode pesawat"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Kunci orientasi layar"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"BISUKAN"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Pemberitahuan"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 9e7f53a..c94dbb5 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Impostazioni"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Modalità aereo"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Blocca orientamento schermo"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUTE"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifiche"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index a242d04..85beeb3 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"הגדרות"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"מצב טיסה"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"נעל כיוון מסך"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"השתק"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"אוטומטי"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"התראות"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 869688c..9cb8189 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"機内モード"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"画面の向きをロック"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ミュート"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"オート"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 32ae7e7..4504f61 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"설정"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"비행기 모드"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"화면 방향 잠금"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"무시"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"자동"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"알림"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 01cdffd..5985ee6 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nustatymai"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Lėktuvo režimas"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Užfiksuoti ekrano orientaciją"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"NUTILD."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Pranešimai"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 817e1d5..808d374 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Iestatījumi"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Lidmašīnas režīms"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloķēt ekrāna orientāciju"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"IZ. SK."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Paziņojumi"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index bb96483..e23a17f 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Innstillinger"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Trådløse nettverk"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Flymodus"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Lås skjermretning"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"DEMPET"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Varslinger"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index faf3f32..56136fa 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Instellingen"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Vliegmodus"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Schermstand vergrendelen"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"DEMPEN"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Meldingen"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 77ae7e7..7ccb037 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ustawienia"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Tryb samolotowy"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Zablokuj orientację ekranu"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"WYGAŚ"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Powiadomienia"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 1215415..088240c 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Definições"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Modo de avião"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloquear orientação do ecrã"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"D. SOM"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 1f4afb7..7636aed 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configurações"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Modo para avião"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Bloquear orientação de tela"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUDO"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index d4d4600..debba7a 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -42,7 +42,7 @@
<skip />
<!-- no translation found for status_bar_settings_airplane (4879879698500955300) -->
<skip />
- <!-- no translation found for status_bar_settings_rotation_lock (8361452930058000609) -->
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
<skip />
<!-- no translation found for status_bar_settings_mute_label (554682549917429396) -->
<skip />
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index c3bcc97..e62eb6e 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Setări"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mod Avion"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Blocaţi orientarea ecranului"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"DEZAC."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificări"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index e53fbd2..d57289e 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Режим полета"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Закрепить ориентацию экрана"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ВЫКЛ."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТО"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Уведомления"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index bf316cc..78a7149 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavenia"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Režim V lietadle"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Uzamknúť orientáciu obrazovky"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"STLMIŤ"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Upozornenia"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index c0a7f04..be77583 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavitve"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Način za letalo"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Zakleni usmerjenost zaslona"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"TIHO"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"SAMOD."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Obvestila"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index bd00a9c..2e9a18b 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Подешавања"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Режим рада у авиону"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Закључавање положаја екрана"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"УГАСИ"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АУТОM."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Обавештења"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 3d8f3c9..041d309 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Inställningar"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Flygplansläge"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Lås bildskärmens riktning"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"TYST"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Aviseringar"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index c42e26d..4cac345 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"การตั้งค่า"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"โหมดใช้งานบนเครื่องบิน"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"ล็อกแนวหน้าจอ"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ปิดเสียง"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"อัตโนมัติ"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"การแจ้งเตือน"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 1244945..8d10afd 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Mga Setting"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Airplane mode"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Naka-lock na screen orientation"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUTE"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Mga Notification"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index e911b42..d6f1482 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ayarlar"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Kablosuz"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Uçak modu"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Ekran yönünü kilitle"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"KAPAT"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"OTOMTK"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Bildirimler"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 963a50f..1d4694b 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Налаштування"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Режим польоту"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Заблокувати орієнтацію екрана"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ІГНОР."</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТОМ."</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Сповіщення"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 108febf..b1eaa8b 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Cài đặt"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"Chế độ trên máy bay"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"Khóa hướng màn hình"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"TẮT TIẾNG"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"TỰ ĐỘNG"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Thông báo"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 5a74abc..3a5f88b 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"设置"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"飞行模式"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"锁定屏幕浏览模式"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"静音"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"自动"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 7509357..203cd08 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -34,7 +34,8 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"飛行模式"</string>
- <string name="status_bar_settings_rotation_lock" msgid="8361452930058000609">"鎖定螢幕瀏覽模式"</string>
+ <!-- no translation found for status_bar_settings_auto_rotation (3790482541357798421) -->
+ <skip />
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"關閉"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"自動"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index 826ac92..0273a4c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -246,16 +246,6 @@ public class PhoneStatusBarPolicy {
R.drawable.stat_sys_data_fully_out_3g,
R.drawable.stat_sys_data_fully_inandout_3g }
};
- private static final int[][] sDataNetType_4g = {
- { R.drawable.stat_sys_data_connected_4g,
- R.drawable.stat_sys_data_in_4g,
- R.drawable.stat_sys_data_out_4g,
- R.drawable.stat_sys_data_inandout_4g },
- { R.drawable.stat_sys_data_fully_connected_4g,
- R.drawable.stat_sys_data_fully_in_4g,
- R.drawable.stat_sys_data_fully_out_4g,
- R.drawable.stat_sys_data_fully_inandout_4g }
- };
private static final int[][] sDataNetType_e = {
{ R.drawable.stat_sys_data_connected_e,
R.drawable.stat_sys_data_in_e,
@@ -680,12 +670,9 @@ public class PhoneStatusBarPolicy {
case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
- case TelephonyManager.NETWORK_TYPE_EHRPD:
mDataIconList = sDataNetType_3g[mInetCondition];
break;
- case TelephonyManager.NETWORK_TYPE_LTE:
- mDataIconList = sDataNetType_4g[mInetCondition];
- break;
+ // TODO - add support for NETWORK_TYPE_LTE and NETWORK_TYPE_EHRPD
default:
mDataIconList = sDataNetType_g[mInetCondition];
break;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 326cd74..b17e41b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -428,14 +428,10 @@ public class NetworkController extends BroadcastReceiver {
case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
- case TelephonyManager.NETWORK_TYPE_EHRPD:
mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
mDataTypeIconId = R.drawable.stat_sys_signal_3g;
break;
- case TelephonyManager.NETWORK_TYPE_LTE:
- mDataIconList = TelephonyIcons.DATA_4G[mInetCondition];
- mDataTypeIconId = R.drawable.stat_sys_signal_4g;
- break;
+ // TODO - add support for NETWORK_TYPE_LTE and NETWORK_TYPE_EHRPD
default:
mDataIconList = TelephonyIcons.DATA_G[mInetCondition];
mDataTypeIconId = R.drawable.stat_sys_signal_gprs;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index 9093b3e..29d35e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -124,18 +124,5 @@ class TelephonyIcons {
R.drawable.stat_sys_data_fully_inandout_1x }
};
- // LTE and eHRPD
- static final int[][] DATA_4G = {
- { R.drawable.stat_sys_data_connected_4g,
- R.drawable.stat_sys_data_in_4g,
- R.drawable.stat_sys_data_out_4g,
- R.drawable.stat_sys_data_inandout_4g },
- { R.drawable.stat_sys_data_fully_connected_4g,
- R.drawable.stat_sys_data_fully_in_4g,
- R.drawable.stat_sys_data_fully_out_4g,
- R.drawable.stat_sys_data_fully_inandout_4g }
- };
-
-
}
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index b7d0a8f..14a6b96 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -696,10 +696,15 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// TODO - move this into the MobileDataStateTracker
int usedNetworkType = networkType;
if(networkType == ConnectivityManager.TYPE_MOBILE) {
- usedNetworkType = convertFeatureToNetworkType(feature);
- if (usedNetworkType < 0) {
- Slog.e(TAG, "Can't match any netTracker!");
- usedNetworkType = networkType;
+ if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_MMS)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_MMS;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_SUPL;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) ||
+ TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_DUN;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_HIPRI;
}
}
NetworkStateTracker network = mNetTrackers[usedNetworkType];
@@ -843,9 +848,15 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// TODO - move to MobileDataStateTracker
int usedNetworkType = networkType;
if (networkType == ConnectivityManager.TYPE_MOBILE) {
- usedNetworkType = convertFeatureToNetworkType(feature);
- if (usedNetworkType < 0) {
- usedNetworkType = networkType;
+ if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_MMS)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_MMS;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_SUPL;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) ||
+ TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_DUN;
+ } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) {
+ usedNetworkType = ConnectivityManager.TYPE_MOBILE_HIPRI;
}
}
tracker = mNetTrackers[usedNetworkType];
@@ -2163,24 +2174,4 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private void loge(String s) {
Slog.e(TAG, s);
}
- int convertFeatureToNetworkType(String feature){
- int networkType = -1;
- if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_MMS)) {
- networkType = ConnectivityManager.TYPE_MOBILE_MMS;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) {
- networkType = ConnectivityManager.TYPE_MOBILE_SUPL;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) ||
- TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) {
- networkType = ConnectivityManager.TYPE_MOBILE_DUN;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) {
- networkType = ConnectivityManager.TYPE_MOBILE_HIPRI;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_FOTA)) {
- networkType = ConnectivityManager.TYPE_MOBILE_FOTA;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_IMS)) {
- networkType = ConnectivityManager.TYPE_MOBILE_IMS;
- } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_CBS)) {
- networkType = ConnectivityManager.TYPE_MOBILE_CBS;
- }
- return networkType;
- }
}
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 44b8590..f2cf942 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -1761,7 +1761,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
enabledSubtypeSet.add(String.valueOf(subtype.hashCode()));
}
ArrayList<InputMethodSubtype> subtypes = getSubtypes(imi);
- CharSequence label = imi.loadLabel(pm);
+ final CharSequence label = imi.loadLabel(pm);
if (showSubtypes && enabledSubtypeSet.size() > 0) {
final int subtypeCount = imi.getSubtypeCount();
for (int j = 0; j < subtypeCount; ++j) {
@@ -1771,8 +1771,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
int nameResId = subtype.getNameResId();
String mode = subtype.getMode();
if (nameResId != 0) {
- title = pm.getText(imi.getPackageName(), nameResId,
- imi.getServiceInfo().applicationInfo);
+ title = TextUtils.concat(pm.getText(imi.getPackageName(),
+ nameResId, imi.getServiceInfo().applicationInfo),
+ " (", label, ")");
} else {
CharSequence language = subtype.getLocale();
// TODO: Use more friendly Title and UI
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 5dcb820..290f2c1 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -91,10 +91,6 @@ public class ServiceState implements Parcelable {
public static final int RADIO_TECHNOLOGY_HSPA = 11;
/** @hide */
public static final int RADIO_TECHNOLOGY_EVDO_B = 12;
- /** @hide */
- public static final int RADIO_TECHNOLOGY_LTE = 13;
- /** @hide */
- public static final int RADIO_TECHNOLOGY_EHRPD = 14;
/**
* Available registration states for GSM, UMTS and CDMA.
@@ -428,12 +424,6 @@ public class ServiceState implements Parcelable {
case 12:
radioTechnology = "EvDo rev. B";
break;
- case 13:
- radioTechnology = "LTE";
- break;
- case 14:
- radioTechnology = "eHRPD";
- break;
default:
Log.w(LOG_TAG, "mRadioTechnology variable out of range.");
break;
diff --git a/telephony/java/com/android/internal/telephony/ApnContext.java b/telephony/java/com/android/internal/telephony/ApnContext.java
deleted file mode 100644
index bd1bc1d..0000000
--- a/telephony/java/com/android/internal/telephony/ApnContext.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2006 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.telephony;
-
-import android.app.PendingIntent;
-
-import android.util.Log;
-import java.util.ArrayList;
-import com.android.internal.telephony.gsm.GsmDataConnection;
-
-/**
- * Maintain the Apn context
- */
-public class ApnContext {
-
- public static final int PENDING_ACTION_NONE = 1;
- public static final int PENDING_ACTION_RECONNECT = 2;
- public static final int PENDING_ACTION_APN_DISABLE = 3;
- public final String LOG_TAG;
-
- int pendingAction;
-
- protected static final boolean DBG = true;
-
- String mApnType;
-
- DataConnectionTracker.State mState;
-
- ArrayList<ApnSetting> mWaitingApns = null;
-
- private int mWaitingApnsPermanentFailureCountDown = 0;
-
- ApnSetting mApnSetting;
-
- GsmDataConnection mDataConnection;
-
- String mReason;
-
- PendingIntent mReconnectIntent;
-
- public ApnContext(String apnType, String logTag) {
- mApnType = apnType;
- mState = DataConnectionTracker.State.IDLE;
- setReason(Phone.REASON_DATA_ENABLED);
- pendingAction = PENDING_ACTION_NONE;
- LOG_TAG = logTag;
- }
-
- public int getPendingAction() {
- return pendingAction;
- }
-
- public void setPendingAction(int pa) {
- pendingAction = pa;
- }
-
- public int getPermFailCount() {
- return mWaitingApnsPermanentFailureCountDown;
- }
-
- public void decPermFailCount() {
- mWaitingApnsPermanentFailureCountDown--;
- }
-
- public String getApnType() {
- return mApnType;
- }
-
- public GsmDataConnection getDataConnection() {
- return mDataConnection;
- }
-
- public void setDataConnection(GsmDataConnection dataConnection) {
- mDataConnection = dataConnection;
- }
-
- public ApnSetting getApnSetting() {
- return mApnSetting;
- }
-
- public void setApnSetting(ApnSetting apnSetting) {
- mApnSetting = apnSetting;
- }
-
- public void setWaitingApns(ArrayList<ApnSetting> waitingApns) {
- mWaitingApns = waitingApns;
- }
-
- public ApnSetting getNextApn() {
- ArrayList<ApnSetting> list = mWaitingApns;
- ApnSetting apn = null;
-
- if (list != null) {
- if (!list.isEmpty()) {
- apn = list.get(0);
- }
- }
- return apn;
- }
-
- public void removeNextApn() {
- if ((mWaitingApns != null) && (!mWaitingApns.isEmpty())) {
- mWaitingApns.remove(0);
- }
- }
-
- public ArrayList<ApnSetting> getWaitingApns() {
- return mWaitingApns;
- }
-
- public void setState(DataConnectionTracker.State s) {
- if (DBG)
- log("setState: " + s + " for type " + mApnType + ", previous state:" + mState);
-
- mState = s;
-
- if (mState == DataConnectionTracker.State.FAILED) {
- if (mWaitingApns != null)
- mWaitingApns.clear(); // when teardown the connection and set to IDLE
- }
- }
-
- public DataConnectionTracker.State getState() {
- return mState;
- }
-
- public void setReason(String reason) {
- if (DBG)
- log("set reason as " + reason + ", for type " + mApnType + ",current state " + mState);
- mReason = reason;
- }
-
- public String getReason() {
- return mReason;
- }
-
- public void setReconnectIntent(PendingIntent intent) {
- if (DBG)
- log("set ReconnectIntent for type " + mApnType);
- mReconnectIntent = intent;
- }
-
- public PendingIntent getReconnectIntent() {
- return mReconnectIntent;
- }
-
- protected void log(String s) {
- Log.d(LOG_TAG, "[ApnContext] " + s);
- }
-}
diff --git a/telephony/java/com/android/internal/telephony/ApnSetting.java b/telephony/java/com/android/internal/telephony/ApnSetting.java
index 3c93a68..20dbaf3 100644
--- a/telephony/java/com/android/internal/telephony/ApnSetting.java
+++ b/telephony/java/com/android/internal/telephony/ApnSetting.java
@@ -38,17 +38,12 @@ public class ApnSetting {
public String numeric;
public String protocol;
public String roamingProtocol;
- public boolean enabled;
-
- int timer;
- int apnclass;
public ApnSetting(int id, String numeric, String carrier, String apn,
String proxy, String port,
String mmsc, String mmsProxy, String mmsPort,
String user, String password, int authType, String[] types,
- String protocol, String roamingProtocol,
- boolean enabled, int timer, int apnclass) {
+ String protocol, String roamingProtocol) {
this.id = id;
this.numeric = numeric;
this.carrier = carrier;
@@ -64,9 +59,6 @@ public class ApnSetting {
this.types = types;
this.protocol = protocol;
this.roamingProtocol = roamingProtocol;
- this.enabled = enabled;
- this.timer = timer;
- this.apnclass = apnclass;
}
/**
@@ -85,7 +77,7 @@ public class ApnSetting {
* v2 format:
* [ApnSettingV2] <carrier>, <apn>, <proxy>, <port>, <mmsc>, <mmsproxy>,
* <mmsport>, <user>, <password, <authtype>, <mcc>, <mnc>,
- * <type>[| <type>...], <protocol>, <roaming_protocol>, <enabled>, <timer>, <apnclass>
+ * <type>[| <type>...], <protocol>, <roaming_protocol>
*
* Note that the strings generated by toString() do not contain the username
* and password and thus cannot be read by this method.
@@ -118,16 +110,11 @@ public class ApnSetting {
String[] typeArray;
String protocol, roamingProtocol;
- boolean enabled;
- int timer, apnclass;
if (version == 1) {
typeArray = new String[a.length - 13];
System.arraycopy(a, 13, typeArray, 0, a.length - 13);
protocol = RILConstants.SETUP_DATA_PROTOCOL_IP;
roamingProtocol = RILConstants.SETUP_DATA_PROTOCOL_IP;
- enabled = true;
- timer = 0;
- apnclass = 0;
} else {
if (a.length < 16) {
return null;
@@ -135,14 +122,10 @@ public class ApnSetting {
typeArray = a[13].split("\\s*\\|\\s*");
protocol = a[14];
roamingProtocol = a[15];
- enabled = Integer.parseInt(a[16]) != 0;
- timer = Integer.parseInt(a[17]);
- apnclass = Integer.parseInt(a[18]);
}
return new ApnSetting(-1,a[10]+a[11],a[0],a[1],a[2],a[3],a[7],a[8],
- a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol,
- enabled,timer,apnclass);
+ a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol);
}
public String toString() {
@@ -166,9 +149,6 @@ public class ApnSetting {
}
sb.append(", ").append(protocol);
sb.append(", ").append(roamingProtocol);
- sb.append(", ").append(enabled);
- sb.append(", ").append(timer);
- sb.append(", ").append(apnclass);
return sb.toString();
}
diff --git a/telephony/java/com/android/internal/telephony/BaseCommands.java b/telephony/java/com/android/internal/telephony/BaseCommands.java
index 0fc81b0..9b19600 100644
--- a/telephony/java/com/android/internal/telephony/BaseCommands.java
+++ b/telephony/java/com/android/internal/telephony/BaseCommands.java
@@ -34,9 +34,6 @@ public abstract class BaseCommands implements CommandsInterface {
//***** Instance Variables
protected Context mContext;
protected RadioState mState = RadioState.RADIO_UNAVAILABLE;
- protected RadioState mSimState = RadioState.RADIO_UNAVAILABLE;
- protected RadioState mRuimState = RadioState.RADIO_UNAVAILABLE;
- protected RadioState mNvState = RadioState.RADIO_UNAVAILABLE;
protected Object mStateMonitor = new Object();
protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList();
@@ -108,18 +105,6 @@ public abstract class BaseCommands implements CommandsInterface {
return mState;
}
- public RadioState getSimState() {
- return mSimState;
- }
-
- public RadioState getRuimState() {
- return mRuimState;
- }
-
- public RadioState getNvState() {
- return mNvState;
- }
-
public void registerForRadioStateChanged(Handler h, int what, Object obj) {
Registrant r = new Registrant (h, what, obj);
@@ -215,7 +200,7 @@ public abstract class BaseCommands implements CommandsInterface {
synchronized (mStateMonitor) {
mSIMReadyRegistrants.add(r);
- if (mSimState.isSIMReady()) {
+ if (mState.isSIMReady()) {
r.notifyRegistrant(new AsyncResult(null, null, null));
}
}
@@ -234,7 +219,7 @@ public abstract class BaseCommands implements CommandsInterface {
synchronized (mStateMonitor) {
mRUIMReadyRegistrants.add(r);
- if (mRuimState.isRUIMReady()) {
+ if (mState.isRUIMReady()) {
r.notifyRegistrant(new AsyncResult(null, null, null));
}
}
@@ -253,7 +238,7 @@ public abstract class BaseCommands implements CommandsInterface {
synchronized (mStateMonitor) {
mNVReadyRegistrants.add(r);
- if (mNvState.isNVReady()) {
+ if (mState.isNVReady()) {
r.notifyRegistrant(new AsyncResult(null, null, null));
}
}
@@ -271,7 +256,7 @@ public abstract class BaseCommands implements CommandsInterface {
synchronized (mStateMonitor) {
mSIMLockedRegistrants.add(r);
- if (mSimState == RadioState.SIM_LOCKED_OR_ABSENT) {
+ if (mState == RadioState.SIM_LOCKED_OR_ABSENT) {
r.notifyRegistrant(new AsyncResult(null, null, null));
}
}
@@ -289,7 +274,7 @@ public abstract class BaseCommands implements CommandsInterface {
synchronized (mStateMonitor) {
mRUIMLockedRegistrants.add(r);
- if (mRuimState == RadioState.RUIM_LOCKED_OR_ABSENT) {
+ if (mState == RadioState.RUIM_LOCKED_OR_ABSENT) {
r.notifyRegistrant(new AsyncResult(null, null, null));
}
}
@@ -668,22 +653,6 @@ public abstract class BaseCommands implements CommandsInterface {
return;
}
- // FIXME: Use Constants or Enums
- if(mState.getType() == 0) {
- mSimState = mState;
- mRuimState = mState;
- mNvState = mState;
- }
- else if (mState.getType() == 1) {
- mSimState = mState;
- }
- else if (mState.getType() == 2) {
- mRuimState = mState;
- }
- else if (mState.getType() == 3) {
- mNvState = mState;
- }
-
mRadioStateChangedRegistrants.notifyRegistrants();
if (mState.isAvailable() && !oldState.isAvailable()) {
diff --git a/telephony/java/com/android/internal/telephony/CallTracker.java b/telephony/java/com/android/internal/telephony/CallTracker.java
index 31f9e18..9619a66 100644
--- a/telephony/java/com/android/internal/telephony/CallTracker.java
+++ b/telephony/java/com/android/internal/telephony/CallTracker.java
@@ -119,10 +119,6 @@ public abstract class CallTracker extends Handler {
//***** Overridden from Handler
public abstract void handleMessage (Message msg);
- public abstract void registerForVoiceCallStarted(Handler h, int what, Object obj);
- public abstract void unregisterForVoiceCallStarted(Handler h);
- public abstract void registerForVoiceCallEnded(Handler h, int what, Object obj);
- public abstract void unregisterForVoiceCallEnded(Handler h);
protected abstract void log(String msg);
diff --git a/telephony/java/com/android/internal/telephony/CommandsInterface.java b/telephony/java/com/android/internal/telephony/CommandsInterface.java
index ea38543..ad21a18 100644
--- a/telephony/java/com/android/internal/telephony/CommandsInterface.java
+++ b/telephony/java/com/android/internal/telephony/CommandsInterface.java
@@ -20,29 +20,25 @@ import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
import android.os.Message;
import android.os.Handler;
-import android.os.SystemProperties;
/**
* {@hide}
*/
public interface CommandsInterface {
- // TODO: Get rid of mot from property.
- static final boolean LTE_AVAILABLE_ON_CDMA =
- SystemProperties.getBoolean("ro.mot.lte_on_cdma", false);
enum RadioState {
- RADIO_OFF(0), /* Radio explictly powered off (eg CFUN=0) */
- RADIO_UNAVAILABLE(0), /* Radio unavailable (eg, resetting or not booted) */
- SIM_NOT_READY(1), /* Radio is on, but the SIM interface is not ready */
- SIM_LOCKED_OR_ABSENT(1), /* SIM PIN locked, PUK required, network
- personalization, or SIM absent */
- SIM_READY(1), /* Radio is on and SIM interface is available */
- RUIM_NOT_READY(2), /* Radio is on, but the RUIM interface is not ready */
- RUIM_READY(2), /* Radio is on and the RUIM interface is available */
- RUIM_LOCKED_OR_ABSENT(2), /* RUIM PIN locked, PUK required, network
- personalization locked, or RUIM absent */
- NV_NOT_READY(3), /* Radio is on, but the NV interface is not available */
- NV_READY(3); /* Radio is on and the NV interface is available */
+ RADIO_OFF, /* Radio explicitly powered off (e.g. CFUN=0) */
+ RADIO_UNAVAILABLE, /* Radio unavailable (e.g. resetting or not booted) */
+ SIM_NOT_READY, /* Radio is on, but the SIM interface is not ready */
+ SIM_LOCKED_OR_ABSENT, /* SIM PIN locked, PUK required, network
+ personalization, or SIM absent */
+ SIM_READY, /* Radio is on and SIM interface is available */
+ RUIM_NOT_READY, /* Radio is on, but the RUIM interface is not ready */
+ RUIM_READY, /* Radio is on and the RUIM interface is available */
+ RUIM_LOCKED_OR_ABSENT, /* RUIM PIN locked, PUK required, network
+ personalization locked, or RUIM absent */
+ NV_NOT_READY, /* Radio is on, but the NV interface is not available */
+ NV_READY; /* Radio is on and the NV interface is available */
public boolean isOn() /* and available...*/ {
return this == SIM_NOT_READY
@@ -54,14 +50,6 @@ public interface CommandsInterface {
|| this == NV_NOT_READY
|| this == NV_READY;
}
- private int stateType;
- private RadioState (int type) {
- stateType = type;
- }
-
- public int getType() {
- return stateType;
- }
public boolean isAvailable() {
return this != RADIO_UNAVAILABLE;
@@ -80,25 +68,17 @@ public interface CommandsInterface {
}
public boolean isGsm() {
- if (LTE_AVAILABLE_ON_CDMA) {
- return false;
- } else {
- return this == SIM_NOT_READY
- || this == SIM_LOCKED_OR_ABSENT
- || this == SIM_READY;
- }
+ return this == SIM_NOT_READY
+ || this == SIM_LOCKED_OR_ABSENT
+ || this == SIM_READY;
}
public boolean isCdma() {
- if (LTE_AVAILABLE_ON_CDMA) {
- return true;
- } else {
- return this == RUIM_NOT_READY
- || this == RUIM_READY
- || this == RUIM_LOCKED_OR_ABSENT
- || this == NV_NOT_READY
- || this == NV_READY;
- }
+ return this == RUIM_NOT_READY
+ || this == RUIM_READY
+ || this == RUIM_LOCKED_OR_ABSENT
+ || this == NV_NOT_READY
+ || this == NV_READY;
}
}
@@ -173,9 +153,6 @@ public interface CommandsInterface {
//***** Methods
RadioState getRadioState();
- RadioState getSimState();
- RadioState getRuimState();
- RadioState getNvState();
/**
* Fires on any RadioState transition
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index 4c1e0cf..7f8485b 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -97,14 +97,14 @@ public abstract class DataConnectionTracker extends Handler {
protected static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE = 12;
protected static final int EVENT_VOICE_CALL_STARTED = 14;
protected static final int EVENT_VOICE_CALL_ENDED = 15;
- protected static final int EVENT_DATA_CONNECTION_DETACHED = 19;
+ protected static final int EVENT_GPRS_DETACHED = 19;
protected static final int EVENT_LINK_STATE_CHANGED = 20;
protected static final int EVENT_ROAMING_ON = 21;
protected static final int EVENT_ROAMING_OFF = 22;
protected static final int EVENT_ENABLE_NEW_APN = 23;
protected static final int EVENT_RESTORE_DEFAULT_APN = 24;
protected static final int EVENT_DISCONNECT_DONE = 25;
- protected static final int EVENT_DATA_CONNECTION_ATTACHED = 26;
+ protected static final int EVENT_GPRS_ATTACHED = 26;
protected static final int EVENT_START_NETSTAT_POLL = 27;
protected static final int EVENT_START_RECOVERY = 28;
protected static final int EVENT_APN_CHANGED = 29;
@@ -117,8 +117,8 @@ public abstract class DataConnectionTracker extends Handler {
protected static final int EVENT_RESTART_RADIO = 36;
protected static final int EVENT_SET_INTERNAL_DATA_ENABLE = 37;
protected static final int EVENT_RESET_DONE = 38;
+
public static final int CMD_SET_DATA_ENABLE = 39;
- public static final int EVENT_CLEAN_UP_ALL_CONNECTIONS = 40;
/***** Constants *****/
@@ -128,10 +128,7 @@ public abstract class DataConnectionTracker extends Handler {
protected static final int APN_SUPL_ID = 2;
protected static final int APN_DUN_ID = 3;
protected static final int APN_HIPRI_ID = 4;
- protected static final int APN_IMS_ID = 5;
- protected static final int APN_FOTA_ID = 6;
- protected static final int APN_CBS_ID = 7;
- protected static final int APN_NUM_TYPES = 8;
+ protected static final int APN_NUM_TYPES = 5;
public static final int DISABLED = 0;
public static final int ENABLED = 1;
@@ -264,8 +261,15 @@ public abstract class DataConnectionTracker extends Handler {
startNetStatPoll();
} else if (action.equals(getActionIntentReconnectAlarm())) {
log("Reconnect alarm. Previous state was " + mState);
- onActionIntentReconnectAlarm(intent);
+ String reason = intent.getStringExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON);
+ if (mState == State.FAILED) {
+ Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
+ msg.arg1 = 0; // tearDown is false
+ msg.obj = reason;
+ sendMessage(msg);
+ }
+ sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
} else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
final android.net.NetworkInfo networkInfo = (NetworkInfo)
intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
@@ -283,18 +287,6 @@ public abstract class DataConnectionTracker extends Handler {
}
};
- protected void onActionIntentReconnectAlarm(Intent intent) {
- String reason = intent.getStringExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON);
- if (mState == State.FAILED) {
- Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
- msg.arg1 = 0; // tearDown is false
- msg.arg2 = 0;
- msg.obj = reason;
- sendMessage(msg);
- }
- sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
- }
-
/**
* Default constructor
*/
@@ -342,10 +334,22 @@ public abstract class DataConnectionTracker extends Handler {
}
public State getState() {
- // TODO: reimplement to use apnType better yet REMOVE.
return mState;
}
+ public String getStateInString() {
+ switch (mState) {
+ case IDLE: return "IDLE";
+ case INITING: return "INIT";
+ case CONNECTING: return "CING";
+ case SCANNING: return "SCAN";
+ case CONNECTED: return "CNTD";
+ case DISCONNECTING: return "DING";
+ case FAILED: return "FAIL";
+ default: return "ERRO";
+ }
+ }
+
/**
* @return the data connections
*/
@@ -370,7 +374,7 @@ public abstract class DataConnectionTracker extends Handler {
return result;
}
- private String getActiveApnType() {
+ public String getActiveApnType() {
String result;
if (mActiveApn != null) {
result = apnIdToType(mActiveApn.id);
@@ -380,7 +384,7 @@ public abstract class DataConnectionTracker extends Handler {
return result;
}
- public String getActiveApnString() {
+ protected String getActiveApnString() {
String result = null;
if (mActiveApn != null) {
result = mActiveApn.apn;
@@ -388,6 +392,17 @@ public abstract class DataConnectionTracker extends Handler {
return result;
}
+ /**
+ * The data connection is expected to be setup while device
+ * 1. has Icc card
+ * 2. registered for data service
+ * 3. user doesn't explicitly disable data service
+ * 4. wifi is not on
+ *
+ * @return false while no data connection if all above requirements are met.
+ */
+ public abstract boolean isDataConnectionAsDesired();
+
//The data roaming setting is now located in the shared preferences.
// See if the requested preference value is the same as that stored in
// the shared values. If it is not, then update it.
@@ -428,8 +443,7 @@ public abstract class DataConnectionTracker extends Handler {
protected abstract void onResetDone(AsyncResult ar);
protected abstract void onVoiceCallStarted();
protected abstract void onVoiceCallEnded();
- protected abstract void onCleanUpConnection(boolean tearDown, int apnId, String reason);
- protected abstract void onCleanUpAllConnections();
+ protected abstract void onCleanUpConnection(boolean tearDown, String reason);
@Override
public void handleMessage(Message msg) {
@@ -484,15 +498,11 @@ public abstract class DataConnectionTracker extends Handler {
onVoiceCallEnded();
break;
- case EVENT_CLEAN_UP_ALL_CONNECTIONS: {
- onCleanUpAllConnections();
- break;
- }
- case EVENT_CLEAN_UP_CONNECTION: {
+ case EVENT_CLEAN_UP_CONNECTION:
boolean tearDown = (msg.arg1 == 0) ? false : true;
- onCleanUpConnection(tearDown, msg.arg2, (String) msg.obj);
+ onCleanUpConnection(tearDown, (String) msg.obj);
break;
- }
+
case EVENT_SET_INTERNAL_DATA_ENABLE: {
boolean enabled = (msg.arg1 == ENABLED) ? true : false;
onSetInternalDataEnabled(enabled);
@@ -547,12 +557,6 @@ public abstract class DataConnectionTracker extends Handler {
return APN_DUN_ID;
} else if (TextUtils.equals(type, Phone.APN_TYPE_HIPRI)) {
return APN_HIPRI_ID;
- } else if (TextUtils.equals(type, Phone.APN_TYPE_IMS)) {
- return APN_IMS_ID;
- } else if (TextUtils.equals(type, Phone.APN_TYPE_FOTA)) {
- return APN_FOTA_ID;
- } else if (TextUtils.equals(type, Phone.APN_TYPE_CBS)) {
- return APN_CBS_ID;
} else {
return APN_INVALID_ID;
}
@@ -570,12 +574,6 @@ public abstract class DataConnectionTracker extends Handler {
return Phone.APN_TYPE_DUN;
case APN_HIPRI_ID:
return Phone.APN_TYPE_HIPRI;
- case APN_IMS_ID:
- return Phone.APN_TYPE_IMS;
- case APN_FOTA_ID:
- return Phone.APN_TYPE_FOTA;
- case APN_CBS_ID:
- return Phone.APN_TYPE_CBS;
default:
log("Unknown id (" + id + ") in apnIdToType");
return Phone.APN_TYPE_DEFAULT;
@@ -828,7 +826,7 @@ public abstract class DataConnectionTracker extends Handler {
dataEnabled[apnId] = false;
enabledCount--;
if (enabledCount == 0) {
- onCleanUpConnection(true, apnId, Phone.REASON_DATA_DISABLED);
+ onCleanUpConnection(true, Phone.REASON_DATA_DISABLED);
}
// send the disconnect msg manually, since the normal route wont send
@@ -886,7 +884,7 @@ public abstract class DataConnectionTracker extends Handler {
mRetryMgr.resetRetryCount();
onTrySetupData(Phone.REASON_DATA_ENABLED);
} else {
- cleanUpAllConnections();
+ onCleanUpConnection(true, Phone.REASON_DATA_DISABLED);
}
}
}
@@ -896,17 +894,6 @@ public abstract class DataConnectionTracker extends Handler {
return mDataEnabled;
}
- public void cleanUpAllConnections() {
- Message msg = obtainMessage(EVENT_CLEAN_UP_ALL_CONNECTIONS);
- sendMessage(msg);
- }
-
- public boolean isAnyActiveDataConnections() {
- // TODO: Remember if there are any connected or
- // loop asking each DC/APN?
- return true;
- }
-
protected void onSetDataEnabled(boolean enable) {
boolean prevEnabled = getAnyDataEnabled();
if (mDataEnabled != enable) {
@@ -920,7 +907,7 @@ public abstract class DataConnectionTracker extends Handler {
mRetryMgr.resetRetryCount();
onTrySetupData(Phone.REASON_DATA_ENABLED);
} else {
- onCleanUpConnection(true, APN_DEFAULT_ID, Phone.REASON_DATA_DISABLED);
+ onCleanUpConnection(true, Phone.REASON_DATA_DISABLED);
}
}
}
diff --git a/telephony/java/com/android/internal/telephony/IccCard.java b/telephony/java/com/android/internal/telephony/IccCard.java
index d9c2e9a..e270ce9 100644
--- a/telephony/java/com/android/internal/telephony/IccCard.java
+++ b/telephony/java/com/android/internal/telephony/IccCard.java
@@ -28,7 +28,6 @@ import android.util.Log;
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.CommandsInterface.RadioState;
-import android.os.SystemProperties;
/**
* {@hide}
@@ -86,10 +85,6 @@ public abstract class IccCard {
private static final int EVENT_QUERY_FACILITY_FDN_DONE = 10;
private static final int EVENT_CHANGE_FACILITY_FDN_DONE = 11;
- // FIXME: remove mot from property
- static final boolean LTE_AVAILABLE_ON_CDMA =
- SystemProperties.getBoolean("ro.mot.lte_on_cdma", false);
-
/*
UNKNOWN is a transient state, for example, after uesr inputs ICC pin under
PIN_REQUIRED state, the query for ICC status returns UNKNOWN before it
@@ -431,9 +426,6 @@ public abstract class IccCard {
broadcastIccStateChangedIntent(INTENT_VALUE_ICC_LOCKED,
INTENT_VALUE_LOCKED_NETWORK);
}
- if (oldState != State.READY && newState == State.READY && LTE_AVAILABLE_ON_CDMA) {
- mPhone.mSIMRecords.onSimReady();
- }
}
/**
@@ -620,16 +612,14 @@ public abstract class IccCard {
currentRadioState == RadioState.SIM_NOT_READY ||
currentRadioState == RadioState.RUIM_NOT_READY ||
currentRadioState == RadioState.NV_NOT_READY ||
- (currentRadioState == RadioState.NV_READY && !LTE_AVAILABLE_ON_CDMA)) {
+ currentRadioState == RadioState.NV_READY) {
return IccCard.State.NOT_READY;
}
if( currentRadioState == RadioState.SIM_LOCKED_OR_ABSENT ||
currentRadioState == RadioState.SIM_READY ||
currentRadioState == RadioState.RUIM_LOCKED_OR_ABSENT ||
- currentRadioState == RadioState.RUIM_READY ||
- (currentRadioState == RadioState.NV_READY && LTE_AVAILABLE_ON_CDMA)) {
-
+ currentRadioState == RadioState.RUIM_READY) {
int index;
diff --git a/telephony/java/com/android/internal/telephony/IccCardApplication.java b/telephony/java/com/android/internal/telephony/IccCardApplication.java
index 4cf21ee..9f60a6c 100644
--- a/telephony/java/com/android/internal/telephony/IccCardApplication.java
+++ b/telephony/java/com/android/internal/telephony/IccCardApplication.java
@@ -28,8 +28,7 @@ public class IccCardApplication {
APPTYPE_SIM,
APPTYPE_USIM,
APPTYPE_RUIM,
- APPTYPE_CSIM,
- APPTYPE_ISIM
+ APPTYPE_CSIM
};
public enum AppState{
@@ -116,7 +115,6 @@ public class IccCardApplication {
case 2: newType = AppType.APPTYPE_USIM; break;
case 3: newType = AppType.APPTYPE_RUIM; break;
case 4: newType = AppType.APPTYPE_CSIM; break;
- case 5: newType = AppType.APPTYPE_ISIM; break;
default:
throw new RuntimeException(
"Unrecognized RIL_AppType: " +type);
diff --git a/telephony/java/com/android/internal/telephony/IccConstants.java b/telephony/java/com/android/internal/telephony/IccConstants.java
index b40f945..b12d2d4 100644
--- a/telephony/java/com/android/internal/telephony/IccConstants.java
+++ b/telephony/java/com/android/internal/telephony/IccConstants.java
@@ -58,13 +58,6 @@ public interface IccConstants {
static final int EF_CST = 0x6f32;
static final int EF_RUIM_SPN =0x6F41;
- //ISIM access
- static final int EF_IMPU = 0x6f04;
- static final int EF_IMPI = 0x6f02;
- static final int EF_DOMAIN = 0x6f03;
- static final int EF_IST = 0x6f07;
- static final int EF_PCSCF = 0x6f09;
-
// SMS record length from TS 51.011 10.5.3
static public final int SMS_RECORD_LENGTH = 176;
@@ -74,7 +67,4 @@ public interface IccConstants {
static final String DF_GRAPHICS = "5F50";
static final String DF_GSM = "7F20";
static final String DF_CDMA = "7F25";
-
- //ISIM access
- static final String DF_ADFISIM = "7FFF";
}
diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java
index 7450047..acb86d4 100644
--- a/telephony/java/com/android/internal/telephony/Phone.java
+++ b/telephony/java/com/android/internal/telephony/Phone.java
@@ -125,12 +125,6 @@ public interface Phone {
static final String APN_TYPE_DUN = "dun";
/** APN type for HiPri traffic */
static final String APN_TYPE_HIPRI = "hipri";
- /** APN type for FOTA */
- static final String APN_TYPE_FOTA = "fota";
- /** APN type for IMS */
- static final String APN_TYPE_IMS = "ims";
- /** APN type for CBS */
- static final String APN_TYPE_CBS = "cbs";
// "Features" accessible through the connectivity manager
static final String FEATURE_ENABLE_MMS = "enableMMS";
@@ -138,9 +132,6 @@ public interface Phone {
static final String FEATURE_ENABLE_DUN = "enableDUN";
static final String FEATURE_ENABLE_HIPRI = "enableHIPRI";
static final String FEATURE_ENABLE_DUN_ALWAYS = "enableDUNAlways";
- static final String FEATURE_ENABLE_FOTA = "enableFOTA";
- static final String FEATURE_ENABLE_IMS = "enableIMS";
- static final String FEATURE_ENABLE_CBS = "enableCBS";
/**
* Return codes for <code>enableApnType()</code>
@@ -149,7 +140,6 @@ public interface Phone {
static final int APN_REQUEST_STARTED = 1;
static final int APN_TYPE_NOT_AVAILABLE = 2;
static final int APN_REQUEST_FAILED = 3;
- static final int APN_ALREADY_INACTIVE = 4;
/**
@@ -174,7 +164,6 @@ public interface Phone {
static final String REASON_PS_RESTRICT_ENABLED = "psRestrictEnabled";
static final String REASON_PS_RESTRICT_DISABLED = "psRestrictDisabled";
static final String REASON_SIM_LOADED = "simLoaded";
- static final String REASON_NW_TYPE_CHANGED = "nwTypeChanged";
// Used for band mode selection methods
static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
@@ -204,7 +193,6 @@ public interface Phone {
int NT_MODE_EVDO_NO_CDMA = RILConstants.NETWORK_MODE_EVDO_NO_CDMA;
int NT_MODE_GLOBAL = RILConstants.NETWORK_MODE_GLOBAL;
- int NT_MODE_LTE_ONLY = RILConstants.NETWORK_MODE_LTE_ONLY;
int PREFERRED_NT_MODE = RILConstants.PREFERRED_NETWORK_MODE;
diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java
index 5408ce9..54341b1 100644
--- a/telephony/java/com/android/internal/telephony/PhoneBase.java
+++ b/telephony/java/com/android/internal/telephony/PhoneBase.java
@@ -38,8 +38,6 @@ import android.util.Log;
import com.android.internal.R;
import com.android.internal.telephony.test.SimulatedRadioControl;
-import com.android.internal.telephony.gsm.SIMRecords;
-import com.android.internal.telephony.gsm.SimCard;
import java.util.Locale;
@@ -118,9 +116,6 @@ public abstract class PhoneBase extends Handler implements Phone {
int mCallRingDelay;
public boolean mIsTheCurrentActivePhone = true;
boolean mIsVoiceCapable = true;
- public SIMRecords mSIMRecords;
- public SimCard mSimCard;
- public SMSDispatcher mSMS;
/**
* Set a system property, unless we're in unit test mode
@@ -242,8 +237,7 @@ public abstract class PhoneBase extends Handler implements Phone {
public void dispose() {
synchronized(PhoneProxy.lockForRadioTechnologyChange) {
mCM.unSetOnCallRing(this);
- // Must cleanup all connectionS and needs to use sendMessage!
- mDataConnection.cleanUpAllConnections();
+ mDataConnection.onCleanUpConnection(false, REASON_RADIO_TURNED_OFF);
mIsTheCurrentActivePhone = false;
}
}
@@ -668,20 +662,6 @@ public abstract class PhoneBase extends Handler implements Phone {
}
/**
- * Retrieves the ServiceStateTracker of the phone instance.
- */
- public ServiceStateTracker getServiceStateTracker() {
- return null;
- }
-
- /**
- * Get call tracker
- */
- public CallTracker getCallTracker() {
- return null;
- }
-
- /**
* Query the status of the CDMA roaming preference
*/
public void queryCdmaRoamingPreference(Message response) {
@@ -1100,14 +1080,4 @@ public abstract class PhoneBase extends Handler implements Phone {
Log.e(LOG_TAG, "Error! " + name + "() in PhoneBase should not be " +
"called, GSMPhone inactive.");
}
-
- // Called by SimRecords which is constructed with a PhoneBase instead of a GSMPhone.
- public void notifyCallForwardingIndicator() {
- // This function should be overridden by the class GSMPhone. Not implemented in CDMAPhone.
- Log.e(LOG_TAG, "Error! This function should never be executed, inactive CDMAPhone.");
- }
-
- public void notifyDataConnectionFailed(String reason, String apnType) {
- mNotifier.notifyDataConnectionFailed(this, reason, apnType);
- }
}
diff --git a/telephony/java/com/android/internal/telephony/PhoneFactory.java b/telephony/java/com/android/internal/telephony/PhoneFactory.java
index c25a53d..2e391cb 100644
--- a/telephony/java/com/android/internal/telephony/PhoneFactory.java
+++ b/telephony/java/com/android/internal/telephony/PhoneFactory.java
@@ -21,10 +21,8 @@ import android.net.LocalServerSocket;
import android.os.Looper;
import android.provider.Settings;
import android.util.Log;
-import android.os.SystemProperties;
import com.android.internal.telephony.cdma.CDMAPhone;
-import com.android.internal.telephony.cdma.CDMALTEPhone;
import com.android.internal.telephony.gsm.GSMPhone;
import com.android.internal.telephony.sip.SipPhone;
import com.android.internal.telephony.sip.SipPhoneFactory;
@@ -36,9 +34,6 @@ public class PhoneFactory {
static final String LOG_TAG = "PHONE";
static final int SOCKET_OPEN_RETRY_MILLIS = 2 * 1000;
static final int SOCKET_OPEN_MAX_RETRY = 3;
- static final boolean LTE_AVAILABLE_ON_CDMA =
- SystemProperties.getBoolean("ro.mot.lte_on_cdma", false);
-
//***** Class Variables
static private Phone sProxyPhone = null;
@@ -120,15 +115,9 @@ public class PhoneFactory {
sProxyPhone = new PhoneProxy(new GSMPhone(context,
sCommandsInterface, sPhoneNotifier));
} else if (phoneType == Phone.PHONE_TYPE_CDMA) {
- if (LTE_AVAILABLE_ON_CDMA == false ) {
- Log.i(LOG_TAG, "Creating CDMAPhone");
- sProxyPhone = new PhoneProxy(new CDMAPhone(context,
- sCommandsInterface, sPhoneNotifier));
- } else {
- Log.i(LOG_TAG, "Creating CDMALTEPhone");
- sProxyPhone = new PhoneProxy(new CDMALTEPhone(context,
- sCommandsInterface, sPhoneNotifier));
- }
+ Log.i(LOG_TAG, "Creating CDMAPhone");
+ sProxyPhone = new PhoneProxy(new CDMAPhone(context,
+ sCommandsInterface, sPhoneNotifier));
}
sMadeDefaults = true;
@@ -158,13 +147,6 @@ public class PhoneFactory {
case RILConstants.NETWORK_MODE_GLOBAL:
return Phone.PHONE_TYPE_CDMA;
-
- case RILConstants.NETWORK_MODE_LTE_ONLY:
- if (SystemProperties.getBoolean("ro.mot.lte_on_cdma", false)) {
- return Phone.PHONE_TYPE_CDMA;
- } else {
- return Phone.PHONE_TYPE_GSM;
- }
default:
return Phone.PHONE_TYPE_GSM;
}
@@ -184,13 +166,8 @@ public class PhoneFactory {
public static Phone getCdmaPhone() {
synchronized(PhoneProxy.lockForRadioTechnologyChange) {
- if (LTE_AVAILABLE_ON_CDMA == false) {
- Phone phone = new CDMAPhone(sContext, sCommandsInterface, sPhoneNotifier);
- return phone;
- } else {
- Phone phone = new CDMALTEPhone(sContext, sCommandsInterface, sPhoneNotifier);
- return phone;
- }
+ Phone phone = new CDMAPhone(sContext, sCommandsInterface, sPhoneNotifier);
+ return phone;
}
}
diff --git a/telephony/java/com/android/internal/telephony/PhoneProxy.java b/telephony/java/com/android/internal/telephony/PhoneProxy.java
index 49497b4..15b23bb 100644
--- a/telephony/java/com/android/internal/telephony/PhoneProxy.java
+++ b/telephony/java/com/android/internal/telephony/PhoneProxy.java
@@ -741,10 +741,6 @@ public class PhoneProxy extends Handler implements Phone {
return mActivePhone.getCdmaEriIconMode();
}
- public Phone getActivePhone() {
- return mActivePhone;
- }
-
public void sendBurstDtmf(String dtmfString, int on, int off, Message onComplete){
mActivePhone.sendBurstDtmf(dtmfString, on, off, onComplete);
}
diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java
index 1d194d0..804ace4 100644
--- a/telephony/java/com/android/internal/telephony/RIL.java
+++ b/telephony/java/com/android/internal/telephony/RIL.java
@@ -638,13 +638,6 @@ public final class RIL extends BaseCommands implements CommandsInterface {
case RILConstants.NETWORK_MODE_GLOBAL:
mPhoneType = RILConstants.CDMA_PHONE;
break;
- case RILConstants.NETWORK_MODE_LTE_ONLY:
- if (SystemProperties.getBoolean("ro.mot.lte_on_cdma", false)) {
- mPhoneType = RILConstants.CDMA_PHONE;
- } else {
- mPhoneType = RILConstants.GSM_PHONE;
- }
- break;
default:
mPhoneType = RILConstants.CDMA_PHONE;
}
@@ -2071,14 +2064,6 @@ public final class RIL extends BaseCommands implements CommandsInterface {
*/
if (RILJ_LOGD) Log.d(LOG_TAG, "Radio ON @ init; reset to OFF");
setRadioPower(false, null);
- // MultimodeRIL needs to know the preferred network at power up.
- RILRequest rrPnt = RILRequest.obtain(
- RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, null);
- rrPnt.mp.writeInt(1);
- rrPnt.mp.writeInt(mNetworkMode);
- if (RILJ_LOGD) riljLog(rrPnt.serialString() + "> "
- + requestToString(rrPnt.mRequest) + " : " + mNetworkMode);
- send(rrPnt);
} else {
if (DBG) Log.d(LOG_TAG, "Radio OFF @ init");
setRadioState(newState);
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 8c9fb79..cdf1977 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -66,8 +66,6 @@ public interface RILConstants {
int NETWORK_MODE_EVDO_NO_CDMA = 6; /* EvDo only */
int NETWORK_MODE_GLOBAL = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
AVAILABLE Application Settings menu*/
- int NETWORK_MODE_LTE_ONLY = 8; /* LTE Only mode. Used only for testing purposes.Not
- user selectable from regular UI */
int PREFERRED_NETWORK_MODE = NETWORK_MODE_WCDMA_PREF;
/* CDMA subscription source. See ril.h RIL_REQUEST_CDMA_SET_SUBSCRIPTION */
@@ -140,12 +138,10 @@ cat include/telephony/ril.h | \
int RIL_RESTRICTED_STATE_PS_ALL = 0x10;
/** Data profile for RIL_REQUEST_SETUP_DATA_CALL */
- public static final int DATA_PROFILE_DEFAULT = 0;
- public static final int DATA_PROFILE_TETHERED = 1;
- public static final int DATA_PROFILE_IMS = 2;
- public static final int DATA_PROFILE_FOTA = 3;
- public static final int DATA_PROFILE_CBS = 4;
- public static final int DATA_PROFILE_OEM_BASE = 1000;
+ static final int DATA_PROFILE_DEFAULT = 0;
+ static final int DATA_PROFILE_TETHERED = 1;
+ static final int DATA_PROFILE_OEM_BASE = 1000;
+
int RIL_REQUEST_GET_SIM_STATUS = 1;
int RIL_REQUEST_ENTER_SIM_PIN = 2;
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
index 6af9b1c..befee8c 100755
--- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
@@ -582,7 +582,7 @@ public abstract class SMSDispatcher extends Handler {
* {@link Activity#RESULT_OK} if the message has been broadcast
* to applications
*/
- public abstract int dispatchMessage(SmsMessageBase sms);
+ protected abstract int dispatchMessage(SmsMessageBase sms);
/**
@@ -916,7 +916,7 @@ public abstract class SMSDispatcher extends Handler {
* @param response
* Callback message is empty on completion
*/
- public abstract void activateCellBroadcastSms(int activate, Message response);
+ protected abstract void activateCellBroadcastSms(int activate, Message response);
/**
* Query the current configuration of cell broadcast SMS.
@@ -925,7 +925,7 @@ public abstract class SMSDispatcher extends Handler {
* Callback message contains the configuration from the modem on completion
* @see #setCellBroadcastConfig
*/
- public abstract void getCellBroadcastSmsConfig(Message response);
+ protected abstract void getCellBroadcastSmsConfig(Message response);
/**
* Configure cell broadcast SMS.
@@ -937,7 +937,7 @@ public abstract class SMSDispatcher extends Handler {
* @param response
* Callback message is empty on completion
*/
- public abstract void setCellBroadcastConfig(int[] configValuesArray, Message response);
+ protected abstract void setCellBroadcastConfig(int[] configValuesArray, Message response);
/**
* Send an acknowledge message.
@@ -1006,27 +1006,6 @@ public abstract class SMSDispatcher extends Handler {
return new SmsTracker(data, sentIntent, deliveryIntent);
}
- public void initSipStack(boolean isObg) {
- // This function should be overridden by the classes that support
- // switching modes such as the CdmaSMSDispatcher.
- // Not implemented in GsmSMSDispatcher.
- Log.e(TAG, "Error! This function should never be executed.");
- }
-
- public void switchToCdma() {
- // This function should be overridden by the classes that support
- // switching modes such as the CdmaSMSDispatcher.
- // Not implemented in GsmSMSDispatcher.
- Log.e(TAG, "Error! This function should never be executed.");
- }
-
- public void switchToGsm() {
- // This function should be overridden by the classes that support
- // switching modes such as the CdmaSMSDispatcher.
- // Not implemented in GsmSMSDispatcher.
- Log.e(TAG, "Error! This function should never be executed.");
- }
-
private DialogInterface.OnClickListener mListener =
new DialogInterface.OnClickListener() {
diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
index 0acbfe3..3f9ffc3 100644
--- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -45,8 +45,6 @@ public abstract class ServiceStateTracker extends Handler {
protected static final int DATA_ACCESS_HSUPA = 10;
protected static final int DATA_ACCESS_HSPA = 11;
protected static final int DATA_ACCESS_CDMA_EvDo_B = 12;
- protected static final int DATA_ACCESS_LTE = 13;
- protected static final int DATA_ACCESS_EHRPD = 14;
protected CommandsInterface cm;
@@ -282,51 +280,12 @@ public abstract class ServiceStateTracker extends Handler {
protected abstract void setPowerStateToDesired();
protected abstract void log(String s);
- private void logUnexpectedGsmMethodCall(String name) {
- log("SSST" + "Error! " + name + "() in ServiceStateTracker should not be " +
- "called, GsmServiceStateTracker inactive.");
- }
-
- public abstract int getCurrentDataConnectionState();
- public abstract boolean isConcurrentVoiceAndDataAllowed();
- public void registerForDataConnectionAttached(Handler h, int what, Object obj) {
- logUnexpectedGsmMethodCall("registerForDataConnectionAttached");
- }
-
- public void unregisterForDataConnectionAttached(Handler h) {
- logUnexpectedGsmMethodCall("unregisterForDataConnectionAttached");
- }
-
- public void registerForDataConnectionDetached(Handler h, int what, Object obj) {
- logUnexpectedGsmMethodCall("registerForDataConnectionDetached");
- }
-
- public void unregisterForDataConnectionDetached(Handler h) {
- logUnexpectedGsmMethodCall("unregisterForDataConnectionDetached");
- }
-
- public void registerForPsRestrictedEnabled(Handler h, int what, Object obj) {
- logUnexpectedGsmMethodCall("registerForPsRestrictedEnabled");
- }
-
- public void unregisterForPsRestrictedEnabled(Handler h) {
- logUnexpectedGsmMethodCall("unregisterForPsRestrictedEnabled");
- }
-
- public void registerForPsRestrictedDisabled(Handler h, int what, Object obj) {
- logUnexpectedGsmMethodCall("registerForPsRestrictedDisabled");
- }
-
- public void unregisterForPsRestrictedDisabled(Handler h) {
- logUnexpectedGsmMethodCall("registerForPsRestrictedDisabled");
- }
-
/**
* Clean up existing voice and data connection then turn off radio power.
*
* Hang up the existing voice calls to decrease call drop rate.
*/
- public abstract void powerOffRadioSafely();
+ protected abstract void powerOffRadioSafely();
/** Cancel a pending (if any) pollState() operation */
protected void cancelPollState() {
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
deleted file mode 100644
index 300670f..0000000
--- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2006 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.telephony.cdma;
-
-import android.os.SystemProperties;
-import android.content.Context;
-import android.net.Uri;
-import android.content.Context;
-import android.provider.Telephony;
-import android.content.ContentValues;
-import android.database.SQLException;
-import android.telephony.ServiceState;
-import android.telephony.SignalStrength;
-
-import com.android.internal.telephony.gsm.SIMRecords;
-import com.android.internal.telephony.gsm.SimCard;
-import com.android.internal.telephony.ServiceStateTracker;
-import com.android.internal.telephony.DataConnectionTracker;
-import com.android.internal.telephony.CommandsInterface;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneBase;
-import com.android.internal.telephony.PhoneNotifier;
-import com.android.internal.telephony.PhoneProxy;
-import com.android.internal.telephony.IccCard;
-import com.android.internal.telephony.gsm.GsmDataConnectionTracker;
-
-import android.util.Log;
-
-public class CDMALTEPhone extends CDMAPhone {
- static final String LOG_TAG = "CDMA";
-
- private static final boolean DBG = true;
-
- // Constructors
- public CDMALTEPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) {
- this(context, ci, notifier, false);
- log("CDMALTEPhone Constructors");
- }
-
- public CDMALTEPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
- boolean unitTestMode) {
- super(context, ci, notifier, false);
- mSST = new CdmaLteServiceStateTracker(this);
- init(context, notifier);
-
- mSIMRecords = new SIMRecords(this);
- mSimCard = new SimCard(this, LOG_TAG, DBG);
- }
-
- public void dispose() {
- synchronized (PhoneProxy.lockForRadioTechnologyChange) {
- super.dispose();
- mSIMRecords.dispose();
- mSimCard.dispose();
- }
- }
-
- @Override
- public void removeReferences() {
- super.removeReferences();
- this.mSIMRecords = null;
- this.mSimCard = null;
- }
-
- @Override
- public ServiceStateTracker getServiceStateTracker() {
- return mSST;
- }
-
- public IccCard getIccCard() {
- return mSimCard;
- }
-
- @Override
- public String getIccSerialNumber() {
- return mSIMRecords.iccid;
- }
-
- @Override
- public DataState getDataConnectionState(String apnType) {
- boolean isCdmaDataConnectionTracker = false;
- if (mDataConnection instanceof CdmaDataConnectionTracker) {
- isCdmaDataConnectionTracker = true;
- }
- log("getDataConnectionState");
- DataState ret = DataState.DISCONNECTED;
-
- if (!isCdmaDataConnectionTracker && (SystemProperties.get("adb.connected", "").length()
- > 0)) {
- // We're connected to an ADB host and we have USB networking
- // turned on. No matter what the radio state is,
- // we report data connected
-
- ret = DataState.CONNECTED;
- } else if (mSST == null) {
- // Radio Technology Change is ongoning, dispose() and
- // removeReferences() have
- // already been called
-
- ret = DataState.DISCONNECTED;
- } else if (mSST.getCurrentCdmaDataConnectionState() != ServiceState.STATE_IN_SERVICE) {
- // If we're out of service, open TCP sockets may still work
- // but no data will flow
- ret = DataState.DISCONNECTED;
- } else if (mDataConnection.isApnTypeEnabled(apnType) == false) {
- ret = DataState.DISCONNECTED;
- } else {
- DataConnectionTracker.State state;
- if (isCdmaDataConnectionTracker) {
- state = mDataConnection.getState();
- } else {
- state = ((GsmDataConnectionTracker)mDataConnection).getState(apnType);
- }
- switch (state) {
- case FAILED:
- case IDLE:
- ret = DataState.DISCONNECTED;
- break;
-
- case CONNECTED:
- case DISCONNECTING:
- if (mCT.state != Phone.State.IDLE && !mSST.isConcurrentVoiceAndDataAllowed()) {
- ret = DataState.SUSPENDED;
- } else {
- ret = DataState.CONNECTED;
- }
- break;
-
- case INITING:
- case CONNECTING:
- case SCANNING:
- ret = DataState.CONNECTING;
- break;
- }
- }
-
- return ret;
- }
-
- public boolean updateCurrentCarrierInProvider() {
- if (mSIMRecords != null) {
- try {
- Uri uri = Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current");
- ContentValues map = new ContentValues();
- map.put(Telephony.Carriers.NUMERIC, mSIMRecords.getSIMOperatorNumeric());
- mContext.getContentResolver().insert(uri, map);
- return true;
- } catch (SQLException e) {
- Log.e(LOG_TAG, "[CDMALTEPhone] Can't store current operator", e);
- }
- }
- return false;
- }
-
- public String getActiveApn(String apnType) {
- if (mDataConnection instanceof CdmaDataConnectionTracker)
- return mDataConnection.getActiveApnString();
-
- return ((GsmDataConnectionTracker)mDataConnection).getActiveApnString(apnType);
- }
-
- protected void log(String s) {
- if (DBG)
- Log.d(LOG_TAG, "[CDMALTEPhone] " + s);
- }
-}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
index 2c7243e..74adebd 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
@@ -66,7 +66,6 @@ import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.UUSInfo;
-import com.android.internal.telephony.CallTracker;
import static com.android.internal.telephony.TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA;
import static com.android.internal.telephony.TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC;
@@ -98,6 +97,7 @@ public class CDMAPhone extends PhoneBase {
// Instance Variables
CdmaCallTracker mCT;
+ CdmaSMSDispatcher mSMS;
CdmaServiceStateTracker mSST;
RuimRecords mRuimRecords;
RuimCard mRuimCard;
@@ -141,21 +141,16 @@ public class CDMAPhone extends PhoneBase {
// Constructors
public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) {
- super(notifier, context, ci, false);
- mSST = new CdmaServiceStateTracker (this);
- init(context, notifier);
+ this(context,ci,notifier, false);
}
public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
boolean unitTestMode) {
super(notifier, context, ci, unitTestMode);
- mSST = new CdmaServiceStateTracker (this);
- init(context, notifier);
- }
- protected void init(Context context, PhoneNotifier notifier) {
mCM.setPhoneType(Phone.PHONE_TYPE_CDMA);
mCT = new CdmaCallTracker(this);
+ mSST = new CdmaServiceStateTracker (this);
mSMS = new CdmaSMSDispatcher(this);
mIccFileHandler = new RuimFileHandler(this);
mRuimRecords = new RuimRecords(this);
@@ -275,18 +270,10 @@ public class CDMAPhone extends PhoneBase {
return mSST.ss;
}
- public CallTracker getCallTracker() {
- return mCT;
- }
-
public Phone.State getState() {
return mCT.state;
}
- public ServiceStateTracker getServiceStateTracker() {
- return mSST;
- }
-
public String getPhoneName() {
return "CDMA";
}
@@ -638,7 +625,7 @@ public class CDMAPhone extends PhoneBase {
case CONNECTED:
case DISCONNECTING:
if ( mCT.state != Phone.State.IDLE
- && !mSST.isConcurrentVoiceAndDataAllowed()) {
+ && !mSST.isConcurrentVoiceAndData()) {
ret = DataState.SUSPENDED;
} else {
ret = DataState.CONNECTED;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java
index 79f4152..a89f783 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java
@@ -134,10 +134,6 @@ public final class CdmaCallTracker extends CallTracker {
public void registerForVoiceCallStarted(Handler h, int what, Object obj) {
Registrant r = new Registrant(h, what, obj);
voiceCallStartedRegistrants.add(r);
- // Notify if in call when registering
- if (state != Phone.State.IDLE) {
- r.notifyRegistrant(new AsyncResult(null, null, null));
- }
}
public void unregisterForVoiceCallStarted(Handler h) {
voiceCallStartedRegistrants.remove(h);
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java
index 1a15393..fbe455e 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java
@@ -430,7 +430,7 @@ public class CdmaConnection extends Connection {
} else if (serviceState == ServiceState.STATE_OUT_OF_SERVICE
|| serviceState == ServiceState.STATE_EMERGENCY_ONLY) {
return DisconnectCause.OUT_OF_SERVICE;
- } else if (phone.mCM.getNvState() != CommandsInterface.RadioState.NV_READY
+ } else if (phone.mCM.getRadioState() != CommandsInterface.RadioState.NV_READY
&& phone.getIccCard().getState() != RuimCard.State.READY) {
return DisconnectCause.ICC_ERROR;
} else if (causeCode==CallFailCause.NORMAL_CLEARING) {
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 8307a48..8c36106 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -167,6 +167,30 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
return false;
}
+ /**
+ * The data connection is expected to be setup while device
+ * 1. has ruim card or non-volatile data store
+ * 2. registered to data connection service
+ * 3. user doesn't explicitly disable data service
+ * 4. wifi is not on
+ *
+ * @return false while no data connection if all above requirements are met.
+ */
+ @Override
+ public boolean isDataConnectionAsDesired() {
+ boolean roaming = mPhone.getServiceState().getRoaming();
+
+ if (((mPhone.mCM.getRadioState() == CommandsInterface.RadioState.NV_READY) ||
+ mCdmaPhone.mRuimRecords.getRecordsLoaded()) &&
+ (mCdmaPhone.mSST.getCurrentCdmaDataConnectionState() ==
+ ServiceState.STATE_IN_SERVICE) &&
+ (!roaming || getDataOnRoamingEnabled()) &&
+ !mIsWifiConnected ) {
+ return (mState == State.CONNECTED);
+ }
+ return true;
+ }
+
@Override
protected boolean isDataAllowed() {
int psState = mCdmaPhone.mSST.getCurrentCdmaDataConnectionState();
@@ -176,9 +200,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
boolean allowed =
(psState == ServiceState.STATE_IN_SERVICE ||
mAutoAttachOnCreation) &&
- (mPhone.mCM.getNvState() == CommandsInterface.RadioState.NV_READY ||
+ (mPhone.mCM.getRadioState() == CommandsInterface.RadioState.NV_READY ||
mCdmaPhone.mRuimRecords.getRecordsLoaded()) &&
- (mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed() ||
+ (mCdmaPhone.mSST.isConcurrentVoiceAndData() ||
mPhone.getState() == Phone.State.IDLE) &&
!roaming &&
mInternalDataEnabled &&
@@ -190,11 +214,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
if (!((psState == ServiceState.STATE_IN_SERVICE) || mAutoAttachOnCreation)) {
reason += " - psState= " + psState;
}
- if (!(mPhone.mCM.getNvState() == CommandsInterface.RadioState.NV_READY ||
+ if (!(mPhone.mCM.getRadioState() == CommandsInterface.RadioState.NV_READY ||
mCdmaPhone.mRuimRecords.getRecordsLoaded())) {
- reason += " - radioState= " + mPhone.mCM.getNvState() + " - RUIM not loaded";
+ reason += " - radioState= " + mPhone.mCM.getRadioState() + " - RUIM not loaded";
}
- if (!(mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed() ||
+ if (!(mCdmaPhone.mSST.isConcurrentVoiceAndData() ||
mPhone.getState() == Phone.State.IDLE)) {
reason += " - concurrentVoiceAndData not allowed and state= " + mPhone.getState();
}
@@ -238,7 +262,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
}
/**
- * Cleanup the CDMA data connection (only one is supported)
+ * Cleanup all connections.
+ *
+ * TODO: Cleanup only a specified connection passed as a parameter.
*
* @param tearDown true if the underlying DataConnection should be disconnected.
* @param reason for the clean up.
@@ -311,7 +337,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
apnId = mDefaultApnId;
}
mActiveApn = new ApnSetting(apnId, "", "", "", "", "", "", "", "", "",
- "", 0, types, "IP", "IP", true, 0, 0);
+ "", 0, types, "IP", "IP");
if (DBG) log("setupData: mActiveApn=" + mActiveApn);
Message msg = obtainMessage();
@@ -360,7 +386,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
protected void restartRadio() {
if (DBG) log("Cleanup connection and wait " +
(TIME_DELAYED_TO_RESTART_RADIO / 1000) + "s to restart radio");
- cleanUpAllConnections();
+ cleanUpConnection(true, Phone.REASON_RADIO_TURNED_OFF);
sendEmptyMessageDelayed(EVENT_RESTART_RADIO, TIME_DELAYED_TO_RESTART_RADIO);
mPendingRestartRadio = true;
}
@@ -517,14 +543,14 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
protected void onRecordsLoaded() {
if (mState == State.FAILED) {
- cleanUpAllConnections();
+ cleanUpConnection(false, null);
}
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA, Phone.REASON_SIM_LOADED));
}
protected void onNVReady() {
if (mState == State.FAILED) {
- cleanUpAllConnections();
+ cleanUpConnection(false, null);
}
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
}
@@ -534,7 +560,6 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
*/
@Override
protected void onEnableNewApn() {
- // No mRequestedApnType check; only one connection is supported
cleanUpConnection(true, Phone.REASON_APN_SWITCHED);
}
@@ -563,7 +588,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
trySetupData(Phone.REASON_ROAMING_ON);
} else {
if (DBG) log("Tear down data connection on roaming.");
- cleanUpAllConnections();
+ cleanUpConnection(true, Phone.REASON_ROAMING_ON);
}
}
@@ -584,7 +609,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
notifyDataAvailability(null);
if (mState != State.IDLE) {
- cleanUpAllConnections();
+ cleanUpConnection(true, null);
}
}
@@ -601,7 +626,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
log("We're on the simulator; assuming radio off is meaningless");
} else {
if (DBG) log("Radio is off and clean up all connection");
- cleanUpAllConnections();
+ cleanUpConnection(false, Phone.REASON_RADIO_TURNED_OFF);
}
}
@@ -686,7 +711,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
*/
@Override
protected void onVoiceCallStarted() {
- if (mState == State.CONNECTED && !mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed()) {
+ if (mState == State.CONNECTED && !mCdmaPhone.mSST.isConcurrentVoiceAndData()) {
stopNetStatPoll();
notifyDataConnection(Phone.REASON_VOICE_CALL_STARTED);
notifyDataAvailability(Phone.REASON_VOICE_CALL_STARTED);
@@ -699,7 +724,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
@Override
protected void onVoiceCallEnded() {
if (mState == State.CONNECTED) {
- if (!mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed()) {
+ if (!mCdmaPhone.mSST.isConcurrentVoiceAndData()) {
startNetStatPoll();
notifyDataConnection(Phone.REASON_VOICE_CALL_ENDED);
} else {
@@ -715,17 +740,10 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
}
@Override
- protected void onCleanUpConnection(boolean tearDown, int apnId, String reason) {
- // No apnId check; only one connection is supported
+ protected void onCleanUpConnection(boolean tearDown, String reason) {
cleanUpConnection(tearDown, reason);
}
- @Override
- protected void onCleanUpAllConnections() {
- // Only one CDMA connection is supported
- cleanUpConnection(true, null);
- }
-
private void createAllDataConnectionList() {
CdmaDataConnection dataConn;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java
deleted file mode 100644
index 5883555..0000000
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java
+++ /dev/null
@@ -1,567 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.telephony.cdma;
-
-import com.android.internal.telephony.DataConnectionTracker;
-import com.android.internal.telephony.TelephonyProperties;
-import com.android.internal.telephony.MccTable;
-import com.android.internal.telephony.EventLogTags;
-import com.android.internal.telephony.RILConstants;
-
-import android.telephony.SignalStrength;
-import android.telephony.ServiceState;
-import android.telephony.cdma.CdmaCellLocation;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Registrant;
-import android.os.RegistrantList;
-import android.os.AsyncResult;
-import android.os.Message;
-
-import android.util.Log;
-import android.util.EventLog;
-
-import com.android.internal.telephony.gsm.RestrictedState;
-import com.android.internal.telephony.gsm.GsmDataConnectionTracker;
-
-public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
- static final String LOG_TAG = "CDMA";
-
- CDMALTEPhone mCdmaLtePhone;
-
- private RestrictedState rs;
-
- private int gprsState = ServiceState.STATE_OUT_OF_SERVICE;
-
- private int newGPRSState = ServiceState.STATE_OUT_OF_SERVICE;
-
- private RegistrantList gprsAttachedRegistrants = new RegistrantList();
-
- private RegistrantList gprsDetachedRegistrants = new RegistrantList();
-
- private RegistrantList psRestrictEnabledRegistrants = new RegistrantList();
-
- private RegistrantList psRestrictDisabledRegistrants = new RegistrantList();
-
- public CdmaLteServiceStateTracker(CDMALTEPhone phone) {
- super(phone);
- mCdmaLtePhone = phone;
- rs = new RestrictedState();
- log("CdmaLteServiceStateTracker Constructors");
- }
-
- // Added 9 new functions needed in GsmDataConnectionTracker, functions were
- // copied over from GsmServiceStateTracker.
- /**
- * Registration point for transition into GPRS attached.
- *
- * @param h handler to notify
- * @param what what code of message when delivered
- * @param obj placed in Message.obj
- */
- public void registerForDataConnectionAttached(Handler h, int what, Object obj) {
- log("registerForDataConnectionAttached ");
- Registrant r = new Registrant(h, what, obj);
- gprsAttachedRegistrants.add(r);
-
- if (gprsState == ServiceState.STATE_IN_SERVICE) {
- r.notifyRegistrant();
- }
- }
-
- public void unregisterForDataConnectionAttached(Handler h) {
- gprsAttachedRegistrants.remove(h);
- }
-
- /**
- * Registration point for transition into GPRS detached.
- *
- * @param h handler to notify
- * @param what what code of message when delivered
- * @param obj placed in Message.obj
- */
- public void registerForDataConnectionDetached(Handler h, int what, Object obj) {
- log("registerForDataConnectionDetached ");
- Registrant r = new Registrant(h, what, obj);
- gprsDetachedRegistrants.add(r);
- if (gprsState == ServiceState.STATE_OUT_OF_SERVICE) {
- r.notifyRegistrant();
- }
- }
-
- public void unregisterForDataConnectionDetached(Handler h) {
- gprsDetachedRegistrants.remove(h);
- }
-
- /**
- * Registration point for transition into packet service restricted zone.
- *
- * @param h handler to notify
- * @param what what code of message when delivered
- * @param obj placed in Message.obj
- */
- public void registerForPsRestrictedEnabled(Handler h, int what, Object obj) {
- log("registerForPsRestrictedEnabled ");
- Registrant r = new Registrant(h, what, obj);
- psRestrictEnabledRegistrants.add(r);
-
- if (rs.isPsRestricted()) {
- r.notifyRegistrant();
- }
- }
-
- public void unregisterForPsRestrictedEnabled(Handler h) {
- psRestrictEnabledRegistrants.remove(h);
- }
-
- /**
- * Registration point for transition out of packet service restricted zone.
- *
- * @param h handler to notify
- * @param what what code of message when delivered
- * @param obj placed in Message.obj
- */
- public void registerForPsRestrictedDisabled(Handler h, int what, Object obj) {
- log("registerForPsRestrictedDisabled ");
- Registrant r = new Registrant(h, what, obj);
- psRestrictDisabledRegistrants.add(r);
-
- if (rs.isPsRestricted()) {
- r.notifyRegistrant();
- }
- }
-
- public void unregisterForPsRestrictedDisabled(Handler h) {
- psRestrictDisabledRegistrants.remove(h);
- }
-
- /**
- * @return The current GPRS state. IN_SERVICE is the same as "attached" and
- * OUT_OF_SERVICE is the same as detached.
- */
- public int getCurrentDataConnectionState() {
- return gprsState;
- }
-
- @Override
- public void handleMessage(Message msg) {
- AsyncResult ar;
- int[] ints;
- String[] strings;
- if (msg.what == EVENT_POLL_STATE_GPRS) {
- log("handleMessage EVENT_POLL_STATE_GPRS");
- ar = (AsyncResult)msg.obj;
- handlePollStateResult(msg.what, ar);
- } else {
- super.handleMessage(msg);
- }
- }
-
- /**
- * The LTE data connection state, only return true here
- */
- @Override
- protected boolean checkAdditionalDataAvaiable() {
- return newGPRSState != ServiceState.STATE_IN_SERVICE;
- }
-
- /**
- * Handle the result of one of the pollState()-related requests
- */
- @Override
- protected void handlePollStateResultMessage(int what, AsyncResult ar) {
- if (what == EVENT_POLL_STATE_GPRS) {
- log("handlePollStateResultMessage EVENT_POLL_STATE_GPRS");
- String states[] = (String[])ar.result;
-
- int type = 0;
- int regState = -1;
- if (states.length > 0) {
- try {
- regState = Integer.parseInt(states[0]);
-
- // states[3] (if present) is the current radio technology
- if (states.length >= 4 && states[3] != null) {
- type = Integer.parseInt(states[3]);
- }
- } catch (NumberFormatException ex) {
- Log.w(LOG_TAG,
- "[CdmaLteServiceStateTracker] error parsing GprsRegistrationState: "
- + ex);
- }
- }
-
- newGPRSState = regCodeToServiceState(regState);
- // Not sure if this is needed in CDMALTE phone.
- // mDataRoaming = regCodeIsRoaming(regState);
- if (newGPRSState == ServiceState.STATE_IN_SERVICE) {
- this.newCdmaDataConnectionState = newGPRSState;
- newNetworkType = type;
- newSS.setRadioTechnology(type);
- }
- } else {
- super.handlePollStateResultMessage(what, ar);
- }
- }
-
- @Override
- protected void setSignalStrengthDefaultValues() {
- mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, false);
- }
-
- @Override
- protected void pollState() {
- pollingContext = new int[1];
- pollingContext[0] = 0;
-
- switch (cm.getRadioState()) {
- case RADIO_UNAVAILABLE:
- newSS.setStateOutOfService();
- newCellLoc.setStateInvalid();
- setSignalStrengthDefaultValues();
- mGotCountryCode = false;
-
- pollStateDone();
- break;
-
- case RADIO_OFF:
- newSS.setStateOff();
- newCellLoc.setStateInvalid();
- setSignalStrengthDefaultValues();
- mGotCountryCode = false;
-
- pollStateDone();
- break;
-
- case SIM_NOT_READY:
- case SIM_LOCKED_OR_ABSENT:
- case SIM_READY:
- log("Radio Technology Change ongoing, setting SS to off");
- newSS.setStateOff();
- newCellLoc.setStateInvalid();
- setSignalStrengthDefaultValues();
- mGotCountryCode = false;
- // NOTE: pollStateDone() is not needed in this case
- break;
-
- default:
- // Issue all poll-related commands at once, then count
- // down the responses which are allowed to arrive
- // out-of-order.
-
- pollingContext[0]++;
- // RIL_REQUEST_OPERATOR is necessary for CDMA
- cm.getOperator(obtainMessage(EVENT_POLL_STATE_OPERATOR_CDMA, pollingContext));
-
- pollingContext[0]++;
- // RIL_REQUEST_VOICE_REGISTRATION_STATE is necessary for CDMA
- cm.getVoiceRegistrationState(obtainMessage(EVENT_POLL_STATE_REGISTRATION_CDMA,
- pollingContext));
-
- int networkMode = android.provider.Settings.Secure.getInt(phone.getContext()
- .getContentResolver(),
- android.provider.Settings.Secure.PREFERRED_NETWORK_MODE,
- RILConstants.PREFERRED_NETWORK_MODE);
- Log.v(LOG_TAG, "[CdmaLteServiceStateTracker] The network mode here is = "
- + networkMode);
- if ((networkMode == RILConstants.NETWORK_MODE_GLOBAL)
- || (networkMode == RILConstants.NETWORK_MODE_LTE_ONLY)) {
- pollingContext[0]++;
- // RIL_REQUEST_DATA_REGISTRATION_STATE
- cm.getDataRegistrationState(obtainMessage(EVENT_POLL_STATE_GPRS,
- pollingContext));
- }
- break;
- }
- }
-
- protected static String networkTypeToString(int type) {
- String ret = "unknown";
-
- switch (type) {
- case DATA_ACCESS_CDMA_IS95A:
- case DATA_ACCESS_CDMA_IS95B:
- ret = "CDMA";
- break;
- case DATA_ACCESS_CDMA_1xRTT:
- ret = "CDMA - 1xRTT";
- break;
- case DATA_ACCESS_CDMA_EvDo_0:
- ret = "CDMA - EvDo rev. 0";
- break;
- case DATA_ACCESS_CDMA_EvDo_A:
- ret = "CDMA - EvDo rev. A";
- break;
- case DATA_ACCESS_CDMA_EvDo_B:
- ret = "CDMA - EvDo rev. B";
- break;
- case DATA_ACCESS_LTE:
- ret = "LTE";
- break;
- case DATA_ACCESS_EHRPD:
- ret = "CDMA - eHRPD";
- default:
- if (DBG) {
- Log.e(LOG_TAG, " [CdmaLteServiceStateTracker] Wrong network."
- + " Can not return a string.");
- }
- break;
- }
- return ret;
- }
-
- @Override
- protected void pollStateDone() {
- log("Poll ServiceState done: oldSS=[" + ss + "] newSS=[" + newSS + "]");
-
- boolean hasRegistered = ss.getState() != ServiceState.STATE_IN_SERVICE
- && newSS.getState() == ServiceState.STATE_IN_SERVICE;
-
- boolean hasDeregistered = ss.getState() == ServiceState.STATE_IN_SERVICE
- && newSS.getState() != ServiceState.STATE_IN_SERVICE;
-
- boolean hasCdmaDataConnectionAttached =
- this.cdmaDataConnectionState != ServiceState.STATE_IN_SERVICE
- && this.newCdmaDataConnectionState == ServiceState.STATE_IN_SERVICE;
-
- boolean hasCdmaDataConnectionDetached =
- this.cdmaDataConnectionState == ServiceState.STATE_IN_SERVICE
- && this.newCdmaDataConnectionState != ServiceState.STATE_IN_SERVICE;
-
- boolean hasCdmaDataConnectionChanged =
- cdmaDataConnectionState != newCdmaDataConnectionState;
-
- boolean hasNetworkTypeChanged = networkType != newNetworkType;
-
- boolean hasChanged = !newSS.equals(ss);
-
- boolean hasRoamingOn = !ss.getRoaming() && newSS.getRoaming();
-
- boolean hasRoamingOff = ss.getRoaming() && !newSS.getRoaming();
-
- boolean hasLocationChanged = !newCellLoc.equals(cellLoc);
-
- boolean has4gHandoff =
- ((networkType == DATA_ACCESS_LTE) && (newNetworkType == DATA_ACCESS_EHRPD))
- || ((networkType == DATA_ACCESS_EHRPD) && (newNetworkType == DATA_ACCESS_LTE));
-
- boolean hasMultiApnSupport =
- (((newNetworkType == DATA_ACCESS_LTE) || (newNetworkType == DATA_ACCESS_EHRPD))
- && ((networkType != DATA_ACCESS_LTE) && (networkType != DATA_ACCESS_EHRPD)));
-
- boolean hasLostMultiApnSupport =
- ((newNetworkType >= DATA_ACCESS_CDMA_IS95A)
- && (newNetworkType <= DATA_ACCESS_CDMA_EvDo_A));
-
- log("hasRegistered = " + hasRegistered + " hasCdmaDataConnectionAttached = "
- + hasCdmaDataConnectionAttached + " hasCdmaDataConnectionChanged = "
- + hasCdmaDataConnectionChanged + " hasNetworkTypeChanged = "
- + hasNetworkTypeChanged + " has4gHandoff = " + has4gHandoff
- + " hasMultiApnSupport = " + hasMultiApnSupport + " hasLostMultiApnSupport = "
- + hasLostMultiApnSupport);
- // Add an event log when connection state changes
- if (ss.getState() != newSS.getState()
- || cdmaDataConnectionState != newCdmaDataConnectionState) {
- EventLog.writeEvent(EventLogTags.CDMA_SERVICE_STATE_CHANGE, ss.getState(),
- cdmaDataConnectionState, newSS.getState(), newCdmaDataConnectionState);
- }
-
- ServiceState tss;
- tss = ss;
- ss = newSS;
- newSS = tss;
- // clean slate for next time
- newSS.setStateOutOfService();
-
- // TODO: 4G Tech Handoff
- // if (has4gHandoff) {
- // Message msg = phone.mDataConnection.obtainMessage(
- // DataConnectionTracker.EVENT_4G_TECHNOLOGY_CHANGE);
- // phone.mDataConnection.sendMessage(msg);
- // }
-
- if ((hasMultiApnSupport)
- && (phone.mDataConnection instanceof CdmaDataConnectionTracker)) {
- log("GsmDataConnectionTracker Created");
- phone.mDataConnection.dispose();
- phone.mDataConnection = new GsmDataConnectionTracker(mCdmaLtePhone);
- }
-
- if ((hasLostMultiApnSupport)
- && (phone.mDataConnection instanceof GsmDataConnectionTracker)) {
- log("GsmDataConnectionTracker disposed");
- phone.mDataConnection.dispose();
- phone.mDataConnection = new CdmaDataConnectionTracker((CDMAPhone)phone);
- }
-
- CdmaCellLocation tcl = cellLoc;
- cellLoc = newCellLoc;
- newCellLoc = tcl;
-
- cdmaDataConnectionState = newCdmaDataConnectionState;
- networkType = newNetworkType;
-
- gprsState = newCdmaDataConnectionState;
-
- newSS.setStateOutOfService(); // clean slate for next time
-
- if (hasNetworkTypeChanged) {
- phone.setSystemProperty(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE,
- networkTypeToString(networkType));
- }
-
- if (hasRegistered) {
- networkAttachedRegistrants.notifyRegistrants();
- }
-
- if (hasChanged) {
- if (cm.getNvState().isNVReady()) {
- String eriText;
- // Now the CDMAPhone sees the new ServiceState so it can get the
- // new ERI text
- if (ss.getState() == ServiceState.STATE_IN_SERVICE) {
- eriText = phone.getCdmaEriText();
- } else {
- // Note that ServiceState.STATE_OUT_OF_SERVICE is valid used
- // for
- // mRegistrationState 0,2,3 and 4
- eriText = phone.getContext()
- .getText(com.android.internal.R.string.roamingTextSearching).toString();
- }
- ss.setCdmaEriText(eriText);
- }
-
- String operatorNumeric;
-
- phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ALPHA,
- ss.getOperatorAlphaLong());
-
- operatorNumeric = ss.getOperatorNumeric();
- phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric);
-
- if (operatorNumeric == null) {
- phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, "");
- } else {
- String isoCountryCode = "";
- try {
- isoCountryCode = MccTable.countryCodeForMcc(Integer.parseInt(operatorNumeric
- .substring(0, 3)));
- } catch (NumberFormatException ex) {
- Log.w(LOG_TAG, "countryCodeForMcc error" + ex);
- } catch (StringIndexOutOfBoundsException ex) {
- Log.w(LOG_TAG, "countryCodeForMcc error" + ex);
- }
-
- phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY,
- isoCountryCode);
- mGotCountryCode = true;
- if (mNeedFixZone) {
- fixTimeZone(isoCountryCode);
- }
- }
-
- phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISROAMING,
- ss.getRoaming() ? "true" : "false");
-
- updateSpnDisplay();
- phone.notifyServiceStateChanged(ss);
- }
-
- if (hasCdmaDataConnectionAttached) {
- cdmaDataConnectionAttachedRegistrants.notifyRegistrants();
- gprsAttachedRegistrants.notifyRegistrants();
- }
-
- if (hasCdmaDataConnectionDetached) {
- cdmaDataConnectionDetachedRegistrants.notifyRegistrants();
- gprsDetachedRegistrants.notifyRegistrants();
- }
-
- if ((hasCdmaDataConnectionChanged || hasNetworkTypeChanged)
- && (phone.mDataConnection instanceof CdmaDataConnectionTracker)) {
- phone.notifyDataConnection();
- }
-
- if (hasRoamingOn) {
- roamingOnRegistrants.notifyRegistrants();
- }
-
- if (hasRoamingOff) {
- roamingOffRegistrants.notifyRegistrants();
- }
-
- if (hasLocationChanged) {
- phone.notifyLocationChanged();
- }
- }
-
- protected void onSignalStrengthResult(AsyncResult ar) {
- SignalStrength oldSignalStrength = mSignalStrength;
-
- if (ar.exception != null) {
- // Most likely radio is resetting/disconnected change to default
- // values.
- setSignalStrengthDefaultValues();
- } else {
- int[] ints = (int[])ar.result;
- int lteCqi = 99, lteRsrp = -1;
- int lteRssi = 99;
- int offset = 2;
- int cdmaDbm = (ints[offset] > 0) ? -ints[offset] : -120;
- int cdmaEcio = (ints[offset + 1] > 0) ? -ints[offset + 1] : -160;
- int evdoRssi = (ints[offset + 2] > 0) ? -ints[offset + 2] : -120;
- int evdoEcio = (ints[offset + 3] > 0) ? -ints[offset + 3] : -1;
- int evdoSnr = ((ints[offset + 4] > 0) && (ints[offset + 4] <= 8)) ? ints[offset + 4]
- : -1;
- if (networkType == ServiceState.RADIO_TECHNOLOGY_LTE) {
- lteRssi = (ints[offset + 5] >= 0) ? ints[offset + 5] : 99;
- lteRsrp = (ints[offset + 6] > 0) ? -ints[offset + 7] : -1;
- lteCqi = (ints[offset + 7] >= 0) ? ints[offset + 6] : 99;
- }
-
- if (networkType != ServiceState.RADIO_TECHNOLOGY_LTE) {
- mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio, evdoRssi, evdoEcio,
- evdoSnr, false);
- } else {
- mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio, evdoRssi, evdoEcio,
- evdoSnr, lteRssi, lteRsrp, -1, -1, lteCqi, true);
- }
- }
-
- try {
- phone.notifySignalStrength();
- } catch (NullPointerException ex) {
- log("onSignalStrengthResult() Phone already destroyed: " + ex
- + "SignalStrength not notified");
- }
- }
-
- public boolean isConcurrentVoiceAndDataAllowed() {
- // Note: it needs to be confirmed which CDMA network types
- // can support voice and data calls concurrently.
- // For the time-being, the return value will be false.
- // return (networkType >= DATA_ACCESS_LTE);
- return false;
- }
-
- @Override
- protected void log(String s) {
- if (DBG)
- Log.d(LOG_TAG, "[CdmaLteServiceStateTracker] " + s);
- }
-}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
index c0bfd23..6bd2d09 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
@@ -94,7 +94,7 @@ final class CdmaSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public int dispatchMessage(SmsMessageBase smsb) {
+ protected int dispatchMessage(SmsMessageBase smsb) {
// If sms is null, means there was a parsing error.
if (smsb == null) {
@@ -485,19 +485,19 @@ final class CdmaSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public void activateCellBroadcastSms(int activate, Message response) {
+ protected void activateCellBroadcastSms(int activate, Message response) {
mCm.setCdmaBroadcastActivation((activate == 0), response);
}
/** {@inheritDoc} */
@Override
- public void getCellBroadcastSmsConfig(Message response) {
+ protected void getCellBroadcastSmsConfig(Message response) {
mCm.getCdmaBroadcastConfig(response);
}
/** {@inheritDoc} */
@Override
- public void setCellBroadcastConfig(int[] configValuesArray, Message response) {
+ protected void setCellBroadcastConfig(int[] configValuesArray, Message response) {
mCm.setCdmaBroadcastConfig(configValuesArray, response);
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index 31250ad..0debb42 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -61,7 +61,7 @@ import java.util.TimeZone;
/**
* {@hide}
*/
-public class CdmaServiceStateTracker extends ServiceStateTracker {
+final class CdmaServiceStateTracker extends ServiceStateTracker {
static final String LOG_TAG = "CDMA";
CDMAPhone phone;
@@ -88,8 +88,8 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
/**
* Values correspond to ServiceStateTracker.DATA_ACCESS_ definitions.
*/
- protected int networkType = 0;
- protected int newNetworkType = 0;
+ private int networkType = 0;
+ private int newNetworkType = 0;
private boolean mCdmaRoaming = false;
private int mRoamingIndicator;
@@ -99,23 +99,23 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
/**
* Initially assume no data connection.
*/
- protected int cdmaDataConnectionState = ServiceState.STATE_OUT_OF_SERVICE;
- protected int newCdmaDataConnectionState = ServiceState.STATE_OUT_OF_SERVICE;
- protected int mRegistrationState = -1;
- protected RegistrantList cdmaDataConnectionAttachedRegistrants = new RegistrantList();
- protected RegistrantList cdmaDataConnectionDetachedRegistrants = new RegistrantList();
- protected RegistrantList cdmaForSubscriptionInfoReadyRegistrants = new RegistrantList();
+ private int cdmaDataConnectionState = ServiceState.STATE_OUT_OF_SERVICE;
+ private int newCdmaDataConnectionState = ServiceState.STATE_OUT_OF_SERVICE;
+ private int mRegistrationState = -1;
+ private RegistrantList cdmaDataConnectionAttachedRegistrants = new RegistrantList();
+ private RegistrantList cdmaDataConnectionDetachedRegistrants = new RegistrantList();
+ private RegistrantList cdmaForSubscriptionInfoReadyRegistrants = new RegistrantList();
/**
* Sometimes we get the NITZ time before we know what country we
* are in. Keep the time zone information from the NITZ string so
* we can fix the time zone once know the country.
*/
- protected boolean mNeedFixZone = false;
+ private boolean mNeedFixZone = false;
private int mZoneOffset;
private boolean mZoneDst;
private long mZoneTime;
- protected boolean mGotCountryCode = false;
+ private boolean mGotCountryCode = false;
String mSavedTimeZone;
long mSavedTime;
long mSavedAtTime;
@@ -566,21 +566,37 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
cm.setRadioPower(true, null);
} else if (!mDesiredPowerState && cm.getRadioState().isOn()) {
DataConnectionTracker dcTracker = phone.mDataConnection;
+ if (! dcTracker.isDataConnectionAsDesired()) {
+ EventLog.writeEvent(EventLogTags.DATA_NETWORK_STATUS_ON_RADIO_OFF,
+ dcTracker.getStateInString(),
+ dcTracker.getAnyDataEnabled() ? 1 : 0);
+ }
// If it's on and available and we want it off gracefully
powerOffRadioSafely();
} // Otherwise, we're in the desired state
}
- // TODO: Consider moving this method to DataConnectionTracker
@Override
- public void powerOffRadioSafely() {
+ protected void powerOffRadioSafely() {
DataConnectionTracker dcTracker = phone.mDataConnection;
+ Message msg = dcTracker.obtainMessage(DataConnectionTracker.EVENT_CLEAN_UP_CONNECTION);
+ msg.obj = CDMAPhone.REASON_RADIO_TURNED_OFF;
+
synchronized (this) {
if (!mPendingRadioPowerOffAfterDataOff) {
- if (dcTracker.isAnyActiveDataConnections()) {
- dcTracker.cleanUpAllConnections();
+ DataConnectionTracker.State currentState = dcTracker.getState();
+ if (currentState != DataConnectionTracker.State.CONNECTED
+ && currentState != DataConnectionTracker.State.DISCONNECTING
+ && currentState != DataConnectionTracker.State.INITING) {
+ msg.arg1 = 0; // tearDown is false as it is not needed.
+ dcTracker.sendMessage(msg);
+ if (DBG) log("Data disconnected, turn off radio right away.");
+ hangupAndPowerOff();
+ } else {
+ msg.arg1 = 1; // tearDown is true
+ dcTracker.sendMessage(msg);
if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 30000)) {
if (DBG) log("Wait upto 30s for data to disconnect, then turn off radio.");
mPendingRadioPowerOffAfterDataOff = true;
@@ -588,10 +604,6 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
Log.w(LOG_TAG, "Cannot send delayed Msg, turn off radio right away.");
hangupAndPowerOff();
}
- } else {
- dcTracker.cleanUpAllConnections();
- if (DBG) log("Data disconnected, turn off radio right away.");
- hangupAndPowerOff();
}
}
}
@@ -635,167 +647,14 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
/**
- * The LTE data connection state, only return true here
- */
- protected boolean checkAdditionalDataAvaiable(){
- return true;
- }
+ * Handle the result of one of the pollState()-related requests
+ */
- /**
- * Hanlde the PollStateResult message
- */
- protected void handlePollStateResultMessage(int what, AsyncResult ar){
+ @Override
+ protected void handlePollStateResult (int what, AsyncResult ar) {
int ints[];
String states[];
- switch (what) {
- case EVENT_POLL_STATE_REGISTRATION_CDMA: // Handle RIL_REQUEST_REGISTRATION_STATE.
- states = (String[])ar.result;
-
- int registrationState = 4; //[0] registrationState
- int radioTechnology = -1; //[3] radioTechnology
- int baseStationId = -1; //[4] baseStationId
- //[5] baseStationLatitude
- int baseStationLatitude = CdmaCellLocation.INVALID_LAT_LONG;
- //[6] baseStationLongitude
- int baseStationLongitude = CdmaCellLocation.INVALID_LAT_LONG;
- int cssIndicator = 0; //[7] init with 0, because it is treated as a boolean
- int systemId = 0; //[8] systemId
- int networkId = 0; //[9] networkId
- int roamingIndicator = -1; //[10] Roaming indicator
- int systemIsInPrl = 0; //[11] Indicates if current system is in PRL
- int defaultRoamingIndicator = 0; //[12] Is default roaming indicator from PRL
- int reasonForDenial = 0; //[13] Denial reason if registrationState = 3
-
- if (states.length == 14) {
- try {
- if (states[0] != null) {
- registrationState = Integer.parseInt(states[0]);
- }
- if (states[3] != null) {
- radioTechnology = Integer.parseInt(states[3]);
- }
- if (states[4] != null) {
- baseStationId = Integer.parseInt(states[4]);
- }
- if (states[5] != null) {
- baseStationLatitude = Integer.parseInt(states[5]);
- }
- if (states[6] != null) {
- baseStationLongitude = Integer.parseInt(states[6]);
- }
- // Some carriers only return lat-lngs of 0,0
- if (baseStationLatitude == 0 && baseStationLongitude == 0) {
- baseStationLatitude = CdmaCellLocation.INVALID_LAT_LONG;
- baseStationLongitude = CdmaCellLocation.INVALID_LAT_LONG;
- }
- if (states[7] != null) {
- cssIndicator = Integer.parseInt(states[7]);
- }
- if (states[8] != null) {
- systemId = Integer.parseInt(states[8]);
- }
- if (states[9] != null) {
- networkId = Integer.parseInt(states[9]);
- }
- if (states[10] != null) {
- roamingIndicator = Integer.parseInt(states[10]);
- }
- if (states[11] != null) {
- systemIsInPrl = Integer.parseInt(states[11]);
- }
- if (states[12] != null) {
- defaultRoamingIndicator = Integer.parseInt(states[12]);
- }
- if (states[13] != null) {
- reasonForDenial = Integer.parseInt(states[13]);
- }
- } catch (NumberFormatException ex) {
- Log.w(LOG_TAG, "error parsing RegistrationState: " + ex);
- }
- } else {
- throw new RuntimeException("Warning! Wrong number of parameters returned from "
- + "RIL_REQUEST_REGISTRATION_STATE: expected 14 got "
- + states.length);
- }
-
- mRegistrationState = registrationState;
- // When registration state is roaming and TSB58
- // roaming indicator is not in the carrier-specified
- // list of ERIs for home system, mCdmaRoaming is true.
- mCdmaRoaming =
- regCodeIsRoaming(registrationState) && !isRoamIndForHomeSystem(states[10]);
- newSS.setState (regCodeToServiceState(registrationState));
- if(checkAdditionalDataAvaiable()) {
- this.newCdmaDataConnectionState =
- radioTechnologyToDataServiceState(radioTechnology);
- newSS.setRadioTechnology(radioTechnology);
- newNetworkType = radioTechnology;
- }
-
- newSS.setCssIndicator(cssIndicator);
- newSS.setSystemAndNetworkId(systemId, networkId);
- mRoamingIndicator = roamingIndicator;
- mIsInPrl = (systemIsInPrl == 0) ? false : true;
- mDefaultRoamingIndicator = defaultRoamingIndicator;
-
-
- // Values are -1 if not available.
- newCellLoc.setCellLocationData(baseStationId, baseStationLatitude,
- baseStationLongitude, systemId, networkId);
-
- if (reasonForDenial == 0) {
- mRegistrationDeniedReason = ServiceStateTracker.REGISTRATION_DENIED_GEN;
- } else if (reasonForDenial == 1) {
- mRegistrationDeniedReason = ServiceStateTracker.REGISTRATION_DENIED_AUTH;
- } else {
- mRegistrationDeniedReason = "";
- }
-
- if (mRegistrationState == 3) {
- if (DBG) log("Registration denied, " + mRegistrationDeniedReason);
- }
- break;
-
- case EVENT_POLL_STATE_OPERATOR_CDMA: // Handle RIL_REQUEST_OPERATOR
- String opNames[] = (String[])ar.result;
-
- if (opNames != null && opNames.length >= 3) {
- // If the NUMERIC field isn't valid use PROPERTY_CDMA_HOME_OPERATOR_NUMERIC
- if ((opNames[2] == null) || (opNames[2].length() < 5)
- || ("00000".equals(opNames[2]))) {
- opNames[2] = SystemProperties.get(
- CDMAPhone.PROPERTY_CDMA_HOME_OPERATOR_NUMERIC, "00000");
- if (DBG) {
- log("RIL_REQUEST_OPERATOR.response[2], the numeric, " +
- " is bad. Using SystemProperties '" +
- CDMAPhone.PROPERTY_CDMA_HOME_OPERATOR_NUMERIC +
- "'= " + opNames[2]);
- }
- }
- if (cm.getNvState().isNVReady()) {
- // In CDMA in case on NV, the ss.mOperatorAlphaLong is set later with the
- // ERI text, so here it is ignored what is coming from the modem.
- newSS.setOperatorName(null, opNames[1], opNames[2]);
- } else {
- newSS.setOperatorName(opNames[0], opNames[1], opNames[2]);
- }
- } else {
- Log.w(LOG_TAG, "error parsing opNames");
- }
- break;
- default:
- Log.e(LOG_TAG, "RIL response handle in wrong phone!"
- + " Expected CDMA RIL request and get GSM RIL request.");
- break;
- }
- }
-
- /**
- * Handle the result of one of the pollState() - related requests
- */
- @Override
- protected void handlePollStateResult (int what, AsyncResult ar) {
// Ignore stale requests from last poll.
if (ar.userObj != pollingContext) return;
@@ -825,7 +684,148 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
ar.exception);
}
} else try {
- handlePollStateResultMessage(what, ar);
+ switch (what) {
+ case EVENT_POLL_STATE_REGISTRATION_CDMA: // Handle RIL_REQUEST_REGISTRATION_STATE.
+ states = (String[])ar.result;
+
+ int registrationState = 4; //[0] registrationState
+ int radioTechnology = -1; //[3] radioTechnology
+ int baseStationId = -1; //[4] baseStationId
+ //[5] baseStationLatitude
+ int baseStationLatitude = CdmaCellLocation.INVALID_LAT_LONG;
+ //[6] baseStationLongitude
+ int baseStationLongitude = CdmaCellLocation.INVALID_LAT_LONG;
+ int cssIndicator = 0; //[7] init with 0, because it is treated as a boolean
+ int systemId = 0; //[8] systemId
+ int networkId = 0; //[9] networkId
+ int roamingIndicator = -1; //[10] Roaming indicator
+ int systemIsInPrl = 0; //[11] Indicates if current system is in PRL
+ int defaultRoamingIndicator = 0; //[12] Is default roaming indicator from PRL
+ int reasonForDenial = 0; //[13] Denial reason if registrationState = 3
+
+ if (states.length == 14) {
+ try {
+ if (states[0] != null) {
+ registrationState = Integer.parseInt(states[0]);
+ }
+ if (states[3] != null) {
+ radioTechnology = Integer.parseInt(states[3]);
+ }
+ if (states[4] != null) {
+ baseStationId = Integer.parseInt(states[4]);
+ }
+ if (states[5] != null) {
+ baseStationLatitude = Integer.parseInt(states[5]);
+ }
+ if (states[6] != null) {
+ baseStationLongitude = Integer.parseInt(states[6]);
+ }
+ // Some carriers only return lat-lngs of 0,0
+ if (baseStationLatitude == 0 && baseStationLongitude == 0) {
+ baseStationLatitude = CdmaCellLocation.INVALID_LAT_LONG;
+ baseStationLongitude = CdmaCellLocation.INVALID_LAT_LONG;
+ }
+ if (states[7] != null) {
+ cssIndicator = Integer.parseInt(states[7]);
+ }
+ if (states[8] != null) {
+ systemId = Integer.parseInt(states[8]);
+ }
+ if (states[9] != null) {
+ networkId = Integer.parseInt(states[9]);
+ }
+ if (states[10] != null) {
+ roamingIndicator = Integer.parseInt(states[10]);
+ }
+ if (states[11] != null) {
+ systemIsInPrl = Integer.parseInt(states[11]);
+ }
+ if (states[12] != null) {
+ defaultRoamingIndicator = Integer.parseInt(states[12]);
+ }
+ if (states[13] != null) {
+ reasonForDenial = Integer.parseInt(states[13]);
+ }
+ } catch (NumberFormatException ex) {
+ Log.w(LOG_TAG, "error parsing RegistrationState: " + ex);
+ }
+ } else {
+ throw new RuntimeException("Warning! Wrong number of parameters returned from "
+ + "RIL_REQUEST_REGISTRATION_STATE: expected 14 got "
+ + states.length);
+ }
+
+ mRegistrationState = registrationState;
+ // When registration state is roaming and TSB58
+ // roaming indicator is not in the carrier-specified
+ // list of ERIs for home system, mCdmaRoaming is true.
+ mCdmaRoaming =
+ regCodeIsRoaming(registrationState) && !isRoamIndForHomeSystem(states[10]);
+ newSS.setState (regCodeToServiceState(registrationState));
+
+ this.newCdmaDataConnectionState =
+ radioTechnologyToDataServiceState(radioTechnology);
+ newSS.setRadioTechnology(radioTechnology);
+ newNetworkType = radioTechnology;
+
+ newSS.setCssIndicator(cssIndicator);
+ newSS.setSystemAndNetworkId(systemId, networkId);
+ mRoamingIndicator = roamingIndicator;
+ mIsInPrl = (systemIsInPrl == 0) ? false : true;
+ mDefaultRoamingIndicator = defaultRoamingIndicator;
+
+
+ // Values are -1 if not available.
+ newCellLoc.setCellLocationData(baseStationId, baseStationLatitude,
+ baseStationLongitude, systemId, networkId);
+
+ if (reasonForDenial == 0) {
+ mRegistrationDeniedReason = ServiceStateTracker.REGISTRATION_DENIED_GEN;
+ } else if (reasonForDenial == 1) {
+ mRegistrationDeniedReason = ServiceStateTracker.REGISTRATION_DENIED_AUTH;
+ } else {
+ mRegistrationDeniedReason = "";
+ }
+
+ if (mRegistrationState == 3) {
+ if (DBG) log("Registration denied, " + mRegistrationDeniedReason);
+ }
+ break;
+
+ case EVENT_POLL_STATE_OPERATOR_CDMA: // Handle RIL_REQUEST_OPERATOR
+ String opNames[] = (String[])ar.result;
+
+ if (opNames != null && opNames.length >= 3) {
+ // If the NUMERIC field isn't valid use PROPERTY_CDMA_HOME_OPERATOR_NUMERIC
+ if ((opNames[2] == null) || (opNames[2].length() < 5)
+ || ("00000".equals(opNames[2]))) {
+ opNames[2] = SystemProperties.get(
+ CDMAPhone.PROPERTY_CDMA_HOME_OPERATOR_NUMERIC, "00000");
+ if (DBG) {
+ log("RIL_REQUEST_OPERATOR.response[2], the numeric, " +
+ " is bad. Using SystemProperties '" +
+ CDMAPhone.PROPERTY_CDMA_HOME_OPERATOR_NUMERIC +
+ "'= " + opNames[2]);
+ }
+ }
+ if (cm.getRadioState().isNVReady()) {
+ // In CDMA in case on NV, the ss.mOperatorAlphaLong is set later with the
+ // ERI text, so here it is ignored what is coming from the modem.
+ newSS.setOperatorName(null, opNames[1], opNames[2]);
+ } else {
+ newSS.setOperatorName(opNames[0], opNames[1], opNames[2]);
+ }
+ } else {
+ Log.w(LOG_TAG, "error parsing opNames");
+ }
+ break;
+
+ default:
+ Log.e(LOG_TAG, "RIL response handle in wrong phone!"
+ + " Expected CDMA RIL request and get GSM RIL request.");
+ break;
+ }
+
} catch (RuntimeException ex) {
Log.e(LOG_TAG, "Exception while polling service state. "
+ "Probably malformed RIL response.", ex);
@@ -896,8 +896,9 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
- protected void setSignalStrengthDefaultValues() {
- mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1, false);
+ private void setSignalStrengthDefaultValues() {
+ mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, false);
}
/**
@@ -908,7 +909,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
* and start over again if the radio notifies us that some
* event has changed
*/
- protected void
+ private void
pollState() {
pollingContext = new int[1];
pollingContext[0] = 0;
@@ -963,7 +964,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
}
- protected static String networkTypeToString(int type) {
+ private static String networkTypeToString(int type) {
String ret = "unknown";
switch (type) {
@@ -993,7 +994,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
return ret;
}
- protected void fixTimeZone(String isoCountryCode) {
+ private void fixTimeZone(String isoCountryCode) {
TimeZone zone = null;
// If the offset is (0, false) and the time zone property
// is set, use the time zone property rather than GMT.
@@ -1030,7 +1031,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
}
- protected void pollStateDone() {
+ private void pollStateDone() {
if (DBG) log("Poll ServiceState done: oldSS=[" + ss + "] newSS=[" + newSS + "]");
boolean hasRegistered =
@@ -1233,7 +1234,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
* send signal-strength-changed notification if changed
* Called both for solicited and unsolicited signal strength updates
*/
- protected void
+ private void
onSignalStrengthResult(AsyncResult ar) {
SignalStrength oldSignalStrength = mSignalStrength;
@@ -1252,7 +1253,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
//log(String.format("onSignalStrengthResult cdmaDbm=%d cdmaEcio=%d evdoRssi=%d evdoEcio=%d evdoSnr=%d",
// cdmaDbm, cdmaEcio, evdoRssi, evdoEcio, evdoSnr));
mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio,
- evdoRssi, evdoEcio, evdoSnr, false);
+ evdoRssi, evdoEcio, evdoSnr, -1, -1, -1, -1, -1, false);
}
try {
@@ -1288,7 +1289,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
/** code is registration state 0-5 from TS 27.007 7.2 */
- protected int
+ private int
regCodeToServiceState(int code) {
switch (code) {
case 0: // Not searching and not registered
@@ -1318,13 +1319,6 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
}
/**
- * TODO: In the future, we need remove getCurrentCdmaDataConnectionState
- */
- public int getCurrentDataConnectionState() {
- return cdmaDataConnectionState;
- }
-
- /**
* code is registration state 0-5 from TS 27.007 7.2
* returns true if registered roam, false otherwise
*/
@@ -1668,7 +1662,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
* @return true if phone is camping on a technology
* that could support voice and data simultaneously.
*/
- public boolean isConcurrentVoiceAndDataAllowed() {
+ boolean isConcurrentVoiceAndData() {
// Note: it needs to be confirmed which CDMA network types
// can support voice and data calls concurrently.
// For the time-being, the return value will be false.
diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
index 3f1a91b..c17197e 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
@@ -33,7 +33,6 @@ import android.telephony.CellLocation;
import android.telephony.PhoneNumberUtils;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
-import com.android.internal.telephony.CallTracker;
import android.text.TextUtils;
import android.util.Log;
@@ -73,7 +72,6 @@ import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.UUSInfo;
import com.android.internal.telephony.test.SimulatedRadioControl;
import com.android.internal.telephony.IccVmNotSupportedException;
-import com.android.internal.telephony.ServiceStateTracker;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -102,6 +100,9 @@ public class GSMPhone extends PhoneBase {
// Instance Variables
GsmCallTracker mCT;
GsmServiceStateTracker mSST;
+ GsmSMSDispatcher mSMS;
+ SIMRecords mSIMRecords;
+ SimCard mSimCard;
CatService mStkService;
ArrayList <GsmMmiCode> mPendingMMIs = new ArrayList<GsmMmiCode>();
SimPhoneBookInterfaceManager mSimPhoneBookIntManager;
@@ -282,14 +283,6 @@ public class GSMPhone extends PhoneBase {
return mSIMRecords.getVoiceCallForwardingFlag();
}
- public CallTracker getCallTracker() {
- return mCT;
- }
-
- public ServiceStateTracker getServiceStateTracker() {
- return mSST;
- }
-
public List<? extends MmiCode>
getPendingMmiCodes() {
return mPendingMMIs;
@@ -321,7 +314,7 @@ public class GSMPhone extends PhoneBase {
case CONNECTED:
case DISCONNECTING:
if ( mCT.state != Phone.State.IDLE
- && !mSST.isConcurrentVoiceAndDataAllowed()) {
+ && !mSST.isConcurrentVoiceAndData()) {
ret = DataState.SUSPENDED;
} else {
ret = DataState.CONNECTED;
@@ -411,7 +404,7 @@ public class GSMPhone extends PhoneBase {
mNotifier.notifySignalStrength(this);
}
- public void
+ /*package*/ void
notifyDataConnectionFailed(String reason, String apnType) {
mNotifier.notifyDataConnectionFailed(this, reason, apnType);
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
index 9f7673c..4689b2d 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
@@ -19,12 +19,10 @@ package com.android.internal.telephony.gsm;
import android.os.Message;
import android.util.Log;
import android.util.Patterns;
-import android.text.TextUtils;
import com.android.internal.telephony.ApnSetting;
import com.android.internal.telephony.DataConnection;
import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.RetryManager;
@@ -38,10 +36,8 @@ public class GsmDataConnection extends DataConnection {
//***** Instance Variables
private ApnSetting apn;
- protected int mProfileId = RILConstants.DATA_PROFILE_DEFAULT;
- protected String mActiveApnType = Phone.APN_TYPE_DEFAULT;
//***** Constructor
- private GsmDataConnection(PhoneBase phone, String name, RetryManager rm) {
+ private GsmDataConnection(GSMPhone phone, String name, RetryManager rm) {
super(phone, name, rm);
}
@@ -53,7 +49,7 @@ public class GsmDataConnection extends DataConnection {
* @param rm the RetryManager
* @return GsmDataConnection that was created.
*/
- static GsmDataConnection makeDataConnection(PhoneBase phone, int id, RetryManager rm) {
+ static GsmDataConnection makeDataConnection(GSMPhone phone, int id, RetryManager rm) {
synchronized (mCountLock) {
mCount += 1;
}
@@ -106,29 +102,11 @@ public class GsmDataConnection extends DataConnection {
phone.mCM.setupDataCall(
Integer.toString(RILConstants.SETUP_DATA_TECH_GSM),
- Integer.toString(mProfileId),
- apn.apn, apn.user, apn.password,
- Integer.toString(authType),
+ Integer.toString(RILConstants.DATA_PROFILE_DEFAULT),
+ apn.apn, apn.user, apn.password, Integer.toString(authType),
protocol, msg);
}
- public void setProfileId(int profileId) {
- mProfileId = profileId;
- }
-
- public int getProfileId() {
- return mProfileId;
- }
-
- public int getCid() {
- // 'cid' has been defined in parent class
- return cid;
- }
-
- public void setActiveApnType(String apnType) {
- mActiveApnType = apnType;
- }
-
@Override
protected void clearSettings() {
super.clearSettings();
@@ -172,35 +150,17 @@ public class GsmDataConnection extends DataConnection {
}
private void setHttpProxy(String httpProxy, String httpPort) {
+ if (httpProxy == null || httpProxy.length() == 0) {
+ phone.setSystemProperty("net.gprs.http-proxy", null);
+ return;
+ }
- if (DBG) log("set http proxy for"
- + "' APN: '" + mActiveApnType
- + "' proxy: '" + apn.proxy + "' port: '" + apn.port);
- if(TextUtils.equals(mActiveApnType, Phone.APN_TYPE_DEFAULT)) {
- if (httpProxy == null || httpProxy.length() == 0) {
- phone.setSystemProperty("net.gprs.http-proxy", null);
- return;
- }
-
- if (httpPort == null || httpPort.length() == 0) {
- httpPort = "8080"; // Default to port 8080
- }
-
- phone.setSystemProperty("net.gprs.http-proxy",
- "http://" + httpProxy + ":" + httpPort + "/");
- } else {
- if (httpProxy == null || httpProxy.length() == 0) {
- phone.setSystemProperty("net.gprs.http-proxy." + mActiveApnType, null);
- return;
- }
-
- if (httpPort == null || httpPort.length() == 0) {
- httpPort = "8080"; // Default to port 8080
- }
-
- phone.setSystemProperty("net.gprs.http-proxy." + mActiveApnType,
- "http://" + httpProxy + ":" + httpPort + "/");
+ if (httpPort == null || httpPort.length() == 0) {
+ httpPort = "8080"; // Default to port 8080
}
+
+ phone.setSystemProperty("net.gprs.http-proxy",
+ "http://" + httpProxy + ":" + httpPort + "/");
}
private boolean isIpAddress(String address) {
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 8c10c56..c57f2f1 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -22,14 +22,11 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.ProxyProperties;
import android.net.TrafficStats;
import android.net.Uri;
-import android.net.LinkCapabilities;
-import android.net.LinkProperties;
import android.os.AsyncResult;
import android.os.Message;
import android.os.SystemClock;
@@ -39,32 +36,24 @@ import android.provider.Telephony;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
-import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
-import android.preference.PreferenceManager;
import com.android.internal.R;
-import com.android.internal.telephony.ApnContext;
import com.android.internal.telephony.ApnSetting;
import com.android.internal.telephony.DataCallState;
import com.android.internal.telephony.DataConnection;
import com.android.internal.telephony.DataConnectionTracker;
import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.RetryManager;
import com.android.internal.telephony.EventLogTags;
import com.android.internal.telephony.DataConnection.FailCause;
-import com.android.internal.telephony.RILConstants;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.Iterator;
-import java.util.Map;
import java.util.HashMap;
/**
@@ -73,6 +62,7 @@ import java.util.HashMap;
public final class GsmDataConnectionTracker extends DataConnectionTracker {
protected final String LOG_TAG = "GSM";
+ private GSMPhone mGsmPhone;
/**
* Handles changes to the APN db.
*/
@@ -110,15 +100,22 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
*/
private ArrayList<ApnSetting> mAllApns = null;
+ /**
+ * waitingApns holds all apns that are waiting to be connected
+ *
+ * It is a subset of allApns and has the same format
+ */
+ private ArrayList<ApnSetting> mWaitingApns = null;
+ private int mWaitingApnsPermanentFailureCountDown = 0;
private ApnSetting mPreferredApn = null;
+ /** The DataConnection being setup */
+ private GsmDataConnection mPendingDataConnection;
+
/** Convert an ApnType string to Id (TODO: Use "enumeration" instead of String for ApnType) */
private HashMap<String, Integer> mApnToDataConnectionId =
new HashMap<String, Integer>();
- /** Phone.APN_TYPE_* ===> ApnContext */
- private ConcurrentHashMap<String, ApnContext> mApnContexts;
-
/** Is packet service restricted by network */
private boolean mIsPsRestricted = false;
@@ -127,55 +124,32 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
private static final int POLL_PDP_MILLIS = 5 * 1000;
private static final String INTENT_RECONNECT_ALARM = "com.android.internal.telephony.gprs-reconnect";
- private static final String INTENT_RECONNECT_ALARM_EXTRA_TYPE = "type";
static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn");
static final String APN_ID = "apn_id";
private boolean canSetPreferApn = false;
- @Override
- protected void onActionIntentReconnectAlarm(Intent intent) {
- log("GPRS reconnect alarm. Previous state was " + mState);
-
- String reason = intent.getStringExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON);
- String type = intent.getStringExtra(INTENT_RECONNECT_ALARM_EXTRA_TYPE);
- ApnContext apnContext = mApnContexts.get(type);
- if (apnContext != null) {
- apnContext.setReason(reason);
- if (apnContext.getState() == State.FAILED) {
- Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
- msg.arg1 = 0; // tearDown is false
- msg.obj = (ApnContext)apnContext;
- sendMessage(msg);
- }
- sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA, apnContext));
- }
- }
-
/** Watches for changes to the APN db. */
private ApnChangeObserver mApnObserver;
//***** Constructor
- public GsmDataConnectionTracker(PhoneBase p) {
+ GsmDataConnectionTracker(GSMPhone p) {
super(p);
+ mGsmPhone = p;
p.mCM.registerForAvailable (this, EVENT_RADIO_AVAILABLE, null);
p.mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
p.mSIMRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null);
p.mCM.registerForDataNetworkStateChanged (this, EVENT_DATA_STATE_CHANGED, null);
- p.getCallTracker().registerForVoiceCallEnded (this, EVENT_VOICE_CALL_ENDED, null);
- p.getCallTracker().registerForVoiceCallStarted (this, EVENT_VOICE_CALL_STARTED, null);
- p.getServiceStateTracker().registerForDataConnectionAttached(this,
- EVENT_DATA_CONNECTION_ATTACHED, null);
- p.getServiceStateTracker().registerForDataConnectionDetached(this,
- EVENT_DATA_CONNECTION_DETACHED, null);
- p.getServiceStateTracker().registerForRoamingOn(this, EVENT_ROAMING_ON, null);
- p.getServiceStateTracker().registerForRoamingOff(this, EVENT_ROAMING_OFF, null);
- p.getServiceStateTracker().registerForPsRestrictedEnabled(this,
- EVENT_PS_RESTRICT_ENABLED, null);
- p.getServiceStateTracker().registerForPsRestrictedDisabled(this,
- EVENT_PS_RESTRICT_DISABLED, null);
+ p.mCT.registerForVoiceCallEnded (this, EVENT_VOICE_CALL_ENDED, null);
+ p.mCT.registerForVoiceCallStarted (this, EVENT_VOICE_CALL_STARTED, null);
+ p.mSST.registerForGprsAttached(this, EVENT_GPRS_ATTACHED, null);
+ p.mSST.registerForGprsDetached(this, EVENT_GPRS_DETACHED, null);
+ p.mSST.registerForRoamingOn(this, EVENT_ROAMING_ON, null);
+ p.mSST.registerForRoamingOff(this, EVENT_ROAMING_OFF, null);
+ p.mSST.registerForPsRestrictedEnabled(this, EVENT_PS_RESTRICT_ENABLED, null);
+ p.mSST.registerForPsRestrictedDisabled(this, EVENT_PS_RESTRICT_DISABLED, null);
mDataConnectionTracker = this;
mResolver = mPhone.getContext().getContentResolver();
@@ -185,8 +159,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
Telephony.Carriers.CONTENT_URI, true, mApnObserver);
/** Create the default connection */
- mApnContexts = new ConcurrentHashMap<String, ApnContext>();
- initApncontextsAndDataConnection();
+ createDataConnection(Phone.APN_TYPE_DEFAULT);
broadcastMessenger();
}
@@ -197,44 +170,22 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
//Unregister for all events
mPhone.mCM.unregisterForAvailable(this);
mPhone.mCM.unregisterForOffOrNotAvailable(this);
- mPhone.mSIMRecords.unregisterForRecordsLoaded(this);
+ mGsmPhone.mSIMRecords.unregisterForRecordsLoaded(this);
mPhone.mCM.unregisterForDataNetworkStateChanged(this);
- mPhone.getCallTracker().unregisterForVoiceCallEnded(this);
- mPhone.getCallTracker().unregisterForVoiceCallStarted(this);
- mPhone.getServiceStateTracker().unregisterForDataConnectionAttached(this);
- mPhone.getServiceStateTracker().unregisterForDataConnectionDetached(this);
- mPhone.getServiceStateTracker().unregisterForRoamingOn(this);
- mPhone.getServiceStateTracker().unregisterForRoamingOff(this);
- mPhone.getServiceStateTracker().unregisterForPsRestrictedEnabled(this);
- mPhone.getServiceStateTracker().unregisterForPsRestrictedDisabled(this);
+ mGsmPhone.mCT.unregisterForVoiceCallEnded(this);
+ mGsmPhone.mCT.unregisterForVoiceCallStarted(this);
+ mGsmPhone.mSST.unregisterForGprsAttached(this);
+ mGsmPhone.mSST.unregisterForGprsDetached(this);
+ mGsmPhone.mSST.unregisterForRoamingOn(this);
+ mGsmPhone.mSST.unregisterForRoamingOff(this);
+ mGsmPhone.mSST.unregisterForPsRestrictedEnabled(this);
+ mGsmPhone.mSST.unregisterForPsRestrictedDisabled(this);
mPhone.getContext().getContentResolver().unregisterContentObserver(this.mApnObserver);
- mApnContexts.clear();
destroyDataConnections();
}
- /**
- * The only circumstances under which we report that data connectivity is not
- * possible are
- * <ul>
- * <li>Data is disallowed (roaming, power state, voice call, etc).</li>
- * <li>The current data state is {@code DISCONNECTED} for a reason other than
- * having explicitly disabled connectivity. In other words, data is not available
- * because the phone is out of coverage or some like reason.</li>
- * </ul>
- * @return {@code true} if data connectivity is possible, {@code false} otherwise.
- */
- @Override
- protected boolean isDataPossible() {
- boolean possible = (isDataAllowed()
- && getAnyDataEnabled() && (getOverallState() == State.CONNECTED));
- if (!possible && DBG && isDataAllowed()) {
- log("Data not possible. No coverage: dataState = " + getOverallState());
- }
- return possible;
- }
-
@Override
protected void finalize() {
if(DBG) log("finalize");
@@ -245,225 +196,41 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return INTENT_RECONNECT_ALARM;
}
- protected void initApncontextsAndDataConnection() {
- SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mPhone.getContext());
- boolean defaultEnabled = !sp.getBoolean(PhoneBase.DATA_DISABLED_ON_BOOT_KEY, false);
- // create default type context only if enabled
- if (defaultEnabled) {
- ApnContext apnContext = new ApnContext(Phone.APN_TYPE_DEFAULT, LOG_TAG);
- mApnContexts.put(apnContext.getApnType(), apnContext);
- createDataConnection(Phone.APN_TYPE_DEFAULT);
- }
- }
-
@Override
- protected LinkProperties getLinkProperties(String apnType) {
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext != null && apnContext.getDataConnection() != null) {
- if (DBG) log("get active pdp is not null, return link properites for " + apnType);
- return apnContext.getDataConnection().getLinkProperties();
- } else {
- if (DBG) log("return new LinkProperties");
- return new LinkProperties();
- }
- }
-
- @Override
- protected LinkCapabilities getLinkCapabilities(String apnType) {
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext!=null && apnContext.getDataConnection() != null) {
- if (DBG) log("get active pdp is not null, return link Capabilities for " + apnType);
- return apnContext.getDataConnection().getLinkCapabilities();
- } else {
- if (DBG) log("return new LinkCapabilities");
- return new LinkCapabilities();
- }
- }
-
- @Override
- // Return all active apn types
- public synchronized String[] getActiveApnTypes() {
- if (DBG) log("get all active apn types");
- ArrayList<String> result = new ArrayList<String>();
-
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- result.add(apnContext.getApnType());
- }
-
- return (String[])result.toArray(new String[0]);
- }
-
- @Override
- /**
- * Return DEFAULT APN due to the limit of the interface
- */
- public synchronized String getActiveApnString() {
- if (DBG) log( "get default active apn string");
- ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
- if (defaultApnContext != null && defaultApnContext.getApnSetting() != null) {
- return defaultApnContext.getApnSetting().apn;
- }
- return null;
- }
-
- // Return active apn of specific apn type
- public synchronized String getActiveApnString(String apnType) {
- if (DBG) log( "get active apn string for type:" + apnType);
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext != null && apnContext.getApnSetting() != null) {
- return apnContext.getApnSetting().apn;
+ protected void setState(State s) {
+ if (DBG) log ("setState: " + s);
+ if (mState != s) {
+ EventLog.writeEvent(EventLogTags.GSM_DATA_STATE_CHANGE, mState.toString(), s.toString());
+ mState = s;
}
- return null;
- }
- // Return state of specific apn type
- public synchronized State getState(String apnType) {
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext != null) {
- return apnContext.getState();
- }
- return State.FAILED;
- }
-
- // Return state of overall
- public State getOverallState() {
- boolean isConnecting = false;
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- if (apnContext.getState() == State.CONNECTED ||
- apnContext.getState() == State.DISCONNECTING) {
- if (DBG) log("overall state is CONNECTED");
- return State.CONNECTED;
- }
- else if (apnContext.getState() == State.CONNECTING
- || apnContext.getState() == State.INITING) {
- isConnecting = true;
- }
- }
- if (isConnecting) {
- if (DBG) log( "overall state is CONNECTING");
- return State.CONNECTING;
- } else {
- if (DBG) log( "overall state is IDLE");
- return State.IDLE;
+ if (mState == State.FAILED) {
+ if (mWaitingApns != null)
+ mWaitingApns.clear(); // when tear down the connection and set to IDLE
}
}
/**
- * Ensure that we are connected to an APN of the specified type.
+ * The data connection is expected to be setup while device
+ * 1. has sim card
+ * 2. registered to gprs service
+ * 3. user doesn't explicitly disable data service
+ * 4. wifi is not on
*
- * @param type the APN type
- * @return Success is indicated by {@code Phone.APN_ALREADY_ACTIVE} or
- * {@code Phone.APN_REQUEST_STARTED}. In the latter case, a
- * broadcast will be sent by the ConnectivityManager when a
- * connection to the APN has been established.
+ * @return false while no data connection if all above requirements are met.
*/
@Override
- public synchronized int enableApnType(String apnType) {
- if (DBG) log("calling enableApnType with type:" + apnType);
-
- if (!isApnTypeAvailable(apnType)) {
- if (DBG) log("type not available");
- return Phone.APN_TYPE_NOT_AVAILABLE;
- }
-
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext==null) {
- // Is there a Proxy type for this?
- apnContext = getProxyActiveApnType(apnType);
- if (apnContext != null ) {
- notifyApnIdUpToCurrent(Phone.REASON_APN_SWITCHED, apnContext, apnType);
- return Phone.APN_REQUEST_STARTED;
- }
- apnContext = new ApnContext(apnType, LOG_TAG);
- if (DBG) log("New apn type context for type "+apnType);
- mApnContexts.put(apnType, apnContext);
- }
-
- // If already active, return
- log("enableApnType(" + apnType + ")" + ", mState(" + apnContext.getState() + ")");
-
- if (apnContext.getState() == State.INITING) {
- if (DBG) log("return APN_REQUEST_STARTED");
- return Phone.APN_REQUEST_STARTED;
- }
- else if (apnContext.getState() == State.CONNECTED) {
- if (DBG) log("return APN_ALREADY_ACTIVE");
- return Phone.APN_ALREADY_ACTIVE;
- }
- else if (apnContext.getState() == State.DISCONNECTING) {
- if (DBG) log("requested APN while disconnecting");
- apnContext.setPendingAction(ApnContext.PENDING_ACTION_RECONNECT);
- return Phone.APN_REQUEST_STARTED;
- }
-
- if (DBG) log("new apn request for type " + apnType + " is to be handled");
- sendMessage(obtainMessage(EVENT_ENABLE_NEW_APN, apnContext));
- if (DBG) log("return APN_REQUEST_STARTED");
- return Phone.APN_REQUEST_STARTED;
- }
-
- // Returns for ex: if HIGHPRI is supported by DEFAULT
- public ApnContext getProxyActiveApnType(String type) {
-
- Iterator<ApnContext> it = mApnContexts.values().iterator();
-
- while(it.hasNext()) {
- ApnContext apnContext = it.next();
- if (apnContext.getApnSetting() != null && mActiveApn.canHandleType(type))
- return apnContext;
- }
- return null;
- }
-
- // A new APN has gone active and needs to send events to catch up with the
- // current condition
- private void notifyApnIdUpToCurrent(String reason, ApnContext apnContext, String type) {
- switch (apnContext.getState()) {
- case IDLE:
- case INITING:
- break;
- case CONNECTING:
- case SCANNING:
- mPhone.notifyDataConnection(reason, type, Phone.DataState.CONNECTING);
- break;
- case CONNECTED:
- case DISCONNECTING:
- mPhone.notifyDataConnection(reason, type, Phone.DataState.CONNECTING);
- mPhone.notifyDataConnection(reason, type, Phone.DataState.CONNECTED);
- break;
- }
- }
-
- @Override
- public synchronized int disableApnType(String type) {
- if (DBG) log("calling disableApnType with type:" + type);
- ApnContext apnContext = mApnContexts.get(type);
-
- if (apnContext != null) {
- apnContext.setPendingAction(ApnContext.PENDING_ACTION_APN_DISABLE);
-
- if (apnContext.getState() != State.IDLE && apnContext.getState() != State.FAILED) {
- Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
- msg.arg1 = 1; // tearDown is true;
- apnContext.setReason(Phone.REASON_DATA_DISABLED);
- msg.obj = apnContext;
- sendMessage(msg);
- if (DBG) log("return APN_REQUEST_STARTED");
- return Phone.APN_REQUEST_STARTED;
- } else {
- if (DBG) log("return APN_ALREADY_INACTIVE");
- return Phone.APN_ALREADY_INACTIVE;
- }
+ public boolean isDataConnectionAsDesired() {
+ boolean roaming = mPhone.getServiceState().getRoaming();
- } else {
- if (DBG)
- log("no apn context was found, return APN_REQUEST_FAILED");
- return Phone.APN_REQUEST_FAILED;
+ if (mGsmPhone.mSIMRecords.getRecordsLoaded() &&
+ mGsmPhone.mSST.getCurrentGprsState() == ServiceState.STATE_IN_SERVICE &&
+ (!roaming || getDataOnRoamingEnabled()) &&
+ !mIsWifiConnected &&
+ !mIsPsRestricted ) {
+ return (mState == State.CONNECTED);
}
+ return true;
}
@Override
@@ -482,53 +249,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return false;
}
- protected boolean isEnabled(String apnType) {
- ApnContext apnContext = mApnContexts.get(apnType);
- if (apnContext == null) return false;
- if (apnContext.getState() == State.DISCONNECTING
- && apnContext.getPendingAction() == ApnContext.PENDING_ACTION_APN_DISABLE) {
- return false;
- }
- return true;
- }
-
- /**
- * Report on whether data connectivity is enabled for any APN.
- * @return {@code false} if data connectivity has been explicitly disabled,
- * {@code true} otherwise.
- */
- @Override
- public synchronized boolean getAnyDataEnabled() {
- Iterator<ApnContext> it = mApnContexts.values().iterator();
-
- if (!(mInternalDataEnabled && mDataEnabled)) return false;
- if (mApnContexts.isEmpty()) return false;
- while (it.hasNext()) {
- ApnContext apnContext= it.next();
- // Make sure we dont have a context that going down
- // and is explicitly disabled.
- if (!(apnContext.getState() == State.DISCONNECTING
- && apnContext.getPendingAction() == ApnContext.PENDING_ACTION_APN_DISABLE)) {
- return true;
- }
- }
- return false;
- }
-
- private boolean isDataAllowed(ApnContext apnContext) {
- if(apnContext.getState() == State.DISCONNECTING
- && apnContext.getPendingAction() == ApnContext.PENDING_ACTION_APN_DISABLE) {
- return false;
- }
- return isDataAllowed();
- }
-
//****** Called from ServiceStateTracker
/**
* Invoked when ServiceStateTracker observes a transition from GPRS
* attach to detach.
*/
- protected void onDataConnectionDetached() {
+ protected void onGprsDetached() {
/*
* We presently believe it is unnecessary to tear down the PDP context
* when GPRS detaches, but we should stop the network polling.
@@ -537,29 +263,27 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
notifyDataConnection(Phone.REASON_GPRS_DETACHED);
}
- private void onDataConnectionAttached() {
- if (getOverallState() == State.CONNECTED) {
+ private void onGprsAttached() {
+ if (mState == State.CONNECTED) {
startNetStatPoll();
notifyDataConnection(Phone.REASON_GPRS_ATTACHED);
} else {
- // Only check for default APN state
- ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
- if (defaultApnContext.getState() == State.FAILED) {
- cleanUpConnection(false, defaultApnContext);
+ if (mState == State.FAILED) {
+ cleanUpConnection(false, Phone.REASON_GPRS_ATTACHED);
mRetryMgr.resetRetryCount();
}
- trySetupData(Phone.REASON_GPRS_ATTACHED, Phone.APN_TYPE_DEFAULT);
+ trySetupData(Phone.REASON_GPRS_ATTACHED);
}
}
@Override
protected boolean isDataAllowed() {
- int gprsState = mPhone.getServiceStateTracker().getCurrentDataConnectionState();
- boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState();
+ int gprsState = mGsmPhone.mSST.getCurrentGprsState();
+ boolean desiredPowerState = mGsmPhone.mSST.getDesiredPowerState();
boolean allowed =
(gprsState == ServiceState.STATE_IN_SERVICE || mAutoAttachOnCreation) &&
- mPhone.mSIMRecords.getRecordsLoaded() &&
+ mGsmPhone.mSIMRecords.getRecordsLoaded() &&
mPhone.getState() == Phone.State.IDLE &&
mInternalDataEnabled &&
(!mPhone.getServiceState().getRoaming() || getDataOnRoamingEnabled()) &&
@@ -570,7 +294,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (!((gprsState == ServiceState.STATE_IN_SERVICE) || mAutoAttachOnCreation)) {
reason += " - gprs= " + gprsState;
}
- if (!mPhone.mSIMRecords.getRecordsLoaded()) reason += " - SIM not loaded";
+ if (!mGsmPhone.mSIMRecords.getRecordsLoaded()) reason += " - SIM not loaded";
if (mPhone.getState() != Phone.State.IDLE) {
reason += " - PhoneState= " + mPhone.getState();
}
@@ -585,198 +309,94 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return allowed;
}
- private boolean trySetupData(String reason, String type) {
- if (DBG)
- log("***trySetupData for type:" + type+" due to " + (reason == null ? "(unspecified)" : reason));
- log("[DSAC DEB] " + "trySetupData with mIsPsRestricted=" + mIsPsRestricted);
-
- if (type == null) {
- type = Phone.APN_TYPE_DEFAULT;
- }
+ private boolean trySetupData(String reason) {
+ if (DBG) log("***trySetupData due to " + (reason == null ? "(unspecified)" : reason));
- ApnContext apnContext = mApnContexts.get(type);
-
- if (apnContext == null ){
- if (DBG) log("***new apn context for type:" + type);
- apnContext = new ApnContext(type, LOG_TAG);
- if (apnContext == null) {
- if (DBG) log("***new apn context failed ");
- return false;
- }
- mApnContexts.put(type, apnContext);
- }
- apnContext.setReason(reason);
-
- return trySetupData(apnContext);
-
- }
-
- @Override
- protected void setState(State s) {
- if (DBG) log("setState should not be used in GSM" + s);
- }
-
- private boolean trySetupData(ApnContext apnContext) {
-
- if (DBG)
- log("trySetupData for type:" + apnContext.getApnType() +
- " due to " + apnContext.getReason());
log("[DSAC DEB] " + "trySetupData with mIsPsRestricted=" + mIsPsRestricted);
if (mPhone.getSimulatedRadioControl() != null) {
// Assume data is connected on the simulator
// FIXME this can be improved
- apnContext.setState(State.CONNECTED);
- mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
+ setState(State.CONNECTED);
+ notifyDataConnection(reason);
log("(fix?) We're on the simulator; assuming data is connected");
return true;
}
- boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState();
+ int gprsState = mGsmPhone.mSST.getCurrentGprsState();
+ boolean desiredPowerState = mGsmPhone.mSST.getDesiredPowerState();
- if ((apnContext.getState() == State.IDLE || apnContext.getState() == State.SCANNING) &&
- isDataAllowed(apnContext) && getAnyDataEnabled()) {
+ if (((mState == State.IDLE) || (mState == State.SCANNING)) &&
+ isDataAllowed() && getAnyDataEnabled()) {
- if (apnContext.getState() == State.IDLE) {
- ArrayList<ApnSetting> waitingApns = buildWaitingApns(apnContext.getApnType());
- if (waitingApns.isEmpty()) {
+ if (mState == State.IDLE) {
+ mWaitingApns = buildWaitingApns(mRequestedApnType);
+ mWaitingApnsPermanentFailureCountDown = mWaitingApns.size();
+ if (mWaitingApns.isEmpty()) {
if (DBG) log("No APN found");
- notifyNoData(GsmDataConnection.FailCause.MISSING_UNKNOWN_APN, apnContext);
- notifyOffApnsOfAvailability(apnContext.getReason(), false);
+ notifyNoData(GsmDataConnection.FailCause.MISSING_UNKNOWN_APN);
+ notifyOffApnsOfAvailability(reason, false);
return false;
} else {
- apnContext.setWaitingApns(waitingApns);
- log ("Create from mAllApns : " + apnListToString(mAllApns));
+ log ("Create from allApns : " + apnListToString(mAllApns));
}
}
if (DBG) {
- log ("Setup watingApns : " + apnListToString(apnContext.getWaitingApns()));
+ log ("Setup waitngApns : " + apnListToString(mWaitingApns));
}
- // apnContext.setReason(apnContext.getReason());
- boolean retValue = setupData(apnContext);
- notifyOffApnsOfAvailability(apnContext.getReason(), retValue);
+ boolean retValue = setupData(reason);
+ notifyOffApnsOfAvailability(reason, retValue);
return retValue;
} else {
- // TODO: check the condition.
- if (!apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)
- && (apnContext.getState() == State.IDLE
- || apnContext.getState() == State.SCANNING))
- mPhone.notifyDataConnectionFailed(apnContext.getReason(), apnContext.getApnType());
- notifyOffApnsOfAvailability(apnContext.getReason(), false);
+ notifyOffApnsOfAvailability(reason, false);
return false;
}
}
- @Override
- // Disabled apn's still need avail/unavail notificiations - send them out
- protected void notifyOffApnsOfAvailability(String reason, boolean availability) {
- if (mAvailability == availability) return;
- mAvailability = availability;
-
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- // FIXME: Dont understand why this needs to be done!!
- // This information is not available (DISABLED APNS)
- if (false) {
- if (DBG) log("notify disconnected for type:" + apnContext.getApnType());
- mPhone.notifyDataConnection(reason != null ? reason : apnContext.getReason(),
- apnContext.getApnType(),
- Phone.DataState.DISCONNECTED);
- }
- }
- }
-
- /**
- * If tearDown is true, this only tears down a CONNECTED session. Presently,
- * there is no mechanism for abandoning an INITING/CONNECTING session,
- * but would likely involve cancelling pending async requests or
- * setting a flag or new state to ignore them when they came in
- * @param tearDown true if the underlying GsmDataConnection should be
- * disconnected.
- * @param reason reason for the clean up.
- */
- protected void cleanUpAllConnections(boolean tearDown, String reason) {
- if (DBG) log("Clean up all connections due to " + reason);
-
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- apnContext.setReason(reason);
- cleanUpConnection(tearDown, apnContext);
- }
-
- stopNetStatPoll();
- // TODO: Do we need mRequestedApnType?
- mRequestedApnType = Phone.APN_TYPE_DEFAULT;
- }
-
/**
* Cleanup all connections.
*
* TODO: Cleanup only a specified connection passed as a parameter.
- * Also, make sure when you clean up a conn, if it is last apply
- * logic as though it is cleanupAllConnections
*
* @param tearDown true if the underlying DataConnection should be disconnected.
* @param reason for the clean up.
*/
-
- @Override
- protected void onCleanUpAllConnections() {
- cleanUpAllConnections(true, null);
- }
-
- private void cleanUpConnection(boolean tearDown, ApnContext apnContext) {
-
- if (apnContext == null) {
- if (DBG) log("apn context is null");
- return;
- }
-
- if (DBG) log("Clean up connection due to " + apnContext.getReason());
+ private void cleanUpConnection(boolean tearDown, String reason) {
+ if (DBG) log("Clean up connection due to " + reason);
// Clear the reconnect alarm, if set.
- if (apnContext.getReconnectIntent() != null) {
+ if (mReconnectIntent != null) {
AlarmManager am =
(AlarmManager) mPhone.getContext().getSystemService(Context.ALARM_SERVICE);
- am.cancel(apnContext.getReconnectIntent());
- apnContext.setReconnectIntent(null);
+ am.cancel(mReconnectIntent);
+ mReconnectIntent = null;
}
- if (apnContext.getState() == State.IDLE || apnContext.getState() == State.DISCONNECTING) {
- if (DBG) log("state is in " + apnContext.getState());
- return;
- }
-
- if (apnContext.getState() == State.FAILED) {
- if (DBG) log("state is in FAILED");
- apnContext.setState(State.IDLE);
- return;
- }
+ setState(State.DISCONNECTING);
- GsmDataConnection pdp = apnContext.getDataConnection();
- if (tearDown && pdp!=null) {
- apnContext.setState(State.DISCONNECTING);
- Message msg = obtainMessage(EVENT_DISCONNECT_DONE, apnContext);
- pdp.disconnect(msg);
- return;
- } else if (pdp != null) {
- pdp.clearSettings();
+ boolean notificationDeferred = false;
+ for (DataConnection conn : mDataConnections.values()) {
+ if (tearDown) {
+ if (DBG) log("cleanUpConnection: teardown, call conn.disconnect");
+ conn.disconnect(obtainMessage(EVENT_DISCONNECT_DONE,
+ conn.getDataConnectionId(), 0, reason));
+ notificationDeferred = true;
+ } else {
+ if (DBG) log("cleanUpConnection: !tearDown, call conn.resetSynchronously");
+ conn.resetSynchronously();
+ notificationDeferred = false;
+ }
}
+ stopNetStatPoll();
- if (!tearDown) {
- apnContext.setState(State.IDLE);
- mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
- }
- if (apnContext.getPendingAction() == ApnContext.PENDING_ACTION_APN_DISABLE) {
- mApnContexts.remove(apnContext.getApnType());
+ if (!notificationDeferred) {
+ if (DBG) log("cleanupConnection: !notificationDeferred");
+ gotoIdleAndNotifyDataConnection(reason);
}
}
-
/**
* @param types comma delimited list of APN types
* @return array of APN types
@@ -799,8 +419,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
do {
String[] types = parseTypes(
cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.TYPE)));
- int enabled =
- cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.ENABLED));
ApnSetting apn = new ApnSetting(
cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)),
cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NUMERIC)),
@@ -817,11 +435,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
types,
cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROTOCOL)),
cursor.getString(cursor.getColumnIndexOrThrow(
- Telephony.Carriers.ROAMING_PROTOCOL)),
- (enabled == 0 ? false : true),
- cursor.getInt(cursor.getColumnIndexOrThrow(
- Telephony.Carriers.INACTIVE_TIMER)),
- cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.CLASS)));
+ Telephony.Carriers.ROAMING_PROTOCOL)));
result.add(apn);
} while (cursor.moveToNext());
}
@@ -839,71 +453,27 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return null;
}
- protected GsmDataConnection findReadyDataConnection(ApnSetting apn) {
- if (DBG)
- log("findReadyDataConnection for apn string <" +
- (apn!=null?(apn.toString()):"null") +">");
- for (DataConnection conn : mDataConnections.values()) {
- GsmDataConnection dc = (GsmDataConnection) conn;
- if (DBG) log("dc apn string <" +
- (dc.getApn() != null ? (dc.getApn().toString()) : "null") + ">");
- if (dc.getApn() != null && apn != null
- && dc.getApn().toString().equals(apn.toString())) {
- return dc;
- }
- }
- return null;
- }
-
-
- private boolean setupData(ApnContext apnContext) {
- if (DBG) log("enter setupData!");
+ private boolean setupData(String reason) {
ApnSetting apn;
- GsmDataConnection dc;
+ GsmDataConnection gdc;
- int profileId = getApnProfileID(apnContext.getApnType());
- apn = apnContext.getNextApn();
- if (apn == null) {
- if (DBG) log("setupData: return for no apn found!");
- return false;
- }
-
- if (((mPhone.getServiceState().getRadioTechnology() == ServiceState.RADIO_TECHNOLOGY_EHRPD)
- || (mPhone.getServiceState().getRadioTechnology() == ServiceState.RADIO_TECHNOLOGY_LTE))
- && (!apn.enabled)) {
- if (DBG) log("setupData: apn is desabled by carrier!");
- return false;
- }
-
- dc = findReadyDataConnection(apn);
-
- if (dc == null) {
- if (DBG) log("setupData: No ready GsmDataConnection found!");
- // TODO: When allocating you are mapping type to id. If more than 1 free,
- // then could findFreeDataConnection get the wrong one??
- dc = findFreeDataConnection();
- }
-
- if (dc == null) {
+ apn = getNextApn();
+ if (apn == null) return false;
+ gdc = findFreeDataConnection();
+ if (gdc == null) {
if (DBG) log("setupData: No free GsmDataConnection found!");
return false;
}
-
- apnContext.setApnSetting(apn);
- apnContext.setDataConnection(dc);
- dc.setProfileId( profileId );
- dc.setActiveApnType(apnContext.getApnType());
+ mActiveApn = apn;
+ mPendingDataConnection = gdc;
Message msg = obtainMessage();
msg.what = EVENT_DATA_SETUP_COMPLETE;
- msg.obj = apnContext;
-
- if (DBG) log("dc connect!");
- dc.connect(msg, apn);
+ msg.obj = reason;
+ gdc.connect(msg, apn);
- apnContext.setState(State.INITING);
- mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
- if (DBG) log("setupData: initing!");
+ setState(State.INITING);
+ notifyDataConnection(reason);
return true;
}
@@ -928,28 +498,24 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
* Handles changes to the APN database.
*/
private void onApnChanged() {
- // TODO: How to handle when multiple APNs are active?
boolean isConnected;
- ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
- isConnected = (defaultApnContext.getState() != State.IDLE
- && defaultApnContext.getState() != State.FAILED);
+ isConnected = (mState != State.IDLE && mState != State.FAILED);
- if (mPhone instanceof GSMPhone) {
- // The "current" may no longer be valid. MMS depends on this to send properly. TBD
- ((GSMPhone)mPhone).updateCurrentCarrierInProvider();
- }
+ // The "current" may no longer be valid. MMS depends on this to send properly.
+ mGsmPhone.updateCurrentCarrierInProvider();
// TODO: It'd be nice to only do this if the changed entrie(s)
// match the current operator.
createAllApnList();
- if (DBG) log("onApnChanged clean all connections");
- cleanUpAllConnections(isConnected, Phone.REASON_APN_CHANGED);
- if (!isConnected) {
- // TODO: Won't work for multiple connections!!!!
- mRetryMgr.resetRetryCount();
- defaultApnContext.setReason(Phone.REASON_APN_CHANGED);
- trySetupData(defaultApnContext);
+ if (mState != State.DISCONNECTING) {
+ cleanUpConnection(isConnected, Phone.REASON_APN_CHANGED);
+ if (!isConnected) {
+ // reset reconnect timer
+ mRetryMgr.resetRetryCount();
+ mReregisterOnReconnectFailure = false;
+ trySetupData(Phone.REASON_APN_CHANGED);
+ }
}
}
@@ -971,46 +537,28 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return;
}
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- onDataStateChanged(dataCallStates, explicitPoll, apnContext);
- }
- }
-
- private void onDataStateChanged (ArrayList<DataCallState> dataCallStates,
- boolean explicitPoll,
- ApnContext apnContext) {
-
- if (apnContext == null) {
- // Should not happen
- return;
- }
-
- if (apnContext.getState() == State.CONNECTED) {
+ if (mState == State.CONNECTED) {
// The way things are supposed to work, the PDP list
// should not contain the CID after it disconnects.
// However, the way things really work, sometimes the PDP
// context is still listed with active = false, which
// makes it hard to distinguish an activating context from
// an activated-and-then deactivated one.
- if (!dataCallStatesHasCID(dataCallStates, apnContext.getDataConnection().getCid())) {
+ if (!dataCallStatesHasCID(dataCallStates, mCidActive)) {
// It looks like the PDP context has deactivated.
// Tear everything down and try to reconnect.
- Log.i(LOG_TAG, "PDP connection has dropped. Reconnecting");
+ log("PDP connection has dropped. Reconnecting");
// Add an event log when the network drops PDP
- int cid = -1;
GsmCellLocation loc = ((GsmCellLocation)mPhone.getCellLocation());
- if (loc != null) cid = loc.getCid();
- EventLog.writeEvent(EventLogTags.PDP_NETWORK_DROP, cid,
+ EventLog.writeEvent(EventLogTags.PDP_NETWORK_DROP,
+ loc != null ? loc.getCid() : -1,
TelephonyManager.getDefault().getNetworkType());
- cleanUpConnection(true, apnContext);
+ cleanUpConnection(true, null);
return;
- } else if (!dataCallStatesHasActiveCID(dataCallStates,
- apnContext.getDataConnection().getCid())) {
+ } else if (!dataCallStatesHasActiveCID(dataCallStates, mCidActive)) {
// Here, we only consider this authoritative if we asked for the
// PDP list. If it was an unsolicited response, we poll again
// to make sure everyone agrees on the initial state.
@@ -1020,37 +568,33 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
mPhone.mCM.getPDPContextList(
this.obtainMessage(EVENT_GET_PDP_LIST_COMPLETE));
} else {
- Log.i(LOG_TAG, "PDP connection has dropped (active=false case). "
+ log("PDP connection has dropped (active=false case). "
+ " Reconnecting");
// Log the network drop on the event log.
- int cid = -1;
GsmCellLocation loc = ((GsmCellLocation)mPhone.getCellLocation());
- if (loc != null) cid = loc.getCid();
- EventLog.writeEvent(EventLogTags.PDP_NETWORK_DROP, cid,
+ EventLog.writeEvent(EventLogTags.PDP_NETWORK_DROP,
+ loc != null ? loc.getCid() : -1,
TelephonyManager.getDefault().getNetworkType());
- cleanUpConnection(true, apnContext);
+ cleanUpConnection(true, null);
}
}
}
}
- private void notifyDefaultData(ApnContext apnContext) {
- if (DBG)
- log("notifyDefaultData for type: " + apnContext.getApnType()
- + ", reason:" + apnContext.getReason());
- apnContext.setState(State.CONNECTED);
- // setState(State.CONNECTED);
- mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
+ private void notifyDefaultData(String reason) {
+ setState(State.CONNECTED);
+ notifyDataConnection(reason);
startNetStatPoll();
// reset reconnect timer
mRetryMgr.resetRetryCount();
+ mReregisterOnReconnectFailure = false;
}
- // TODO: For multiple Active APNs not exactly sure how to do this.
private void gotoIdleAndNotifyDataConnection(String reason) {
if (DBG) log("gotoIdleAndNotifyDataConnection: reason=" + reason);
+ setState(State.IDLE);
notifyDataConnection(reason);
mActiveApn = null;
}
@@ -1064,18 +608,18 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
private void doRecovery() {
- if (getOverallState() == State.CONNECTED) {
+ if (mState == State.CONNECTED) {
int maxPdpReset = Settings.Secure.getInt(mResolver,
Settings.Secure.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT,
DEFAULT_MAX_PDP_RESET_FAIL);
if (mPdpResetCount < maxPdpReset) {
mPdpResetCount++;
EventLog.writeEvent(EventLogTags.PDP_RADIO_RESET, mSentSinceLastRecv);
- cleanUpAllConnections(true, Phone.REASON_PDP_RESET);
+ cleanUpConnection(true, Phone.REASON_PDP_RESET);
} else {
mPdpResetCount = 0;
EventLog.writeEvent(EventLogTags.PDP_REREGISTER_NETWORK, mSentSinceLastRecv);
- mPhone.getServiceStateTracker().reRegisterNetwork(null);
+ mGsmPhone.mSST.reRegisterNetwork(null);
}
// TODO: Add increasingly drastic recovery steps, eg,
// reset the radio, reset the device.
@@ -1084,7 +628,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
@Override
protected void startNetStatPoll() {
- if (getOverallState() == State.CONNECTED && mNetStatPollEnabled == false) {
+ if (mState == State.CONNECTED && mNetStatPollEnabled == false) {
log("[DataConnection] Start poll NetStat");
resetPollStats();
mNetStatPollEnabled = true;
@@ -1102,8 +646,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
@Override
protected void restartRadio() {
log("************TURN OFF RADIO**************");
- cleanUpAllConnections(true, Phone.REASON_RADIO_TURNED_OFF);
- mPhone.getServiceStateTracker().powerOffRadioSafely();
+ cleanUpConnection(true, Phone.REASON_RADIO_TURNED_OFF);
+ mGsmPhone.mSST.powerOffRadioSafely();
/* Note: no need to call setRadioPower(true). Assuming the desired
* radio power state is still ON (as tracked by ServiceStateTracker),
* ServiceStateTracker will call setRadioPower when it receives the
@@ -1240,26 +784,24 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return retry;
}
- private void reconnectAfterFail(FailCause lastFailCauseCode, ApnContext apnContext) {
- if (apnContext == null) {
- Log.d(LOG_TAG, "It is impossible");
- return;
- }
- if (apnContext.getState() == State.FAILED) {
+ private void reconnectAfterFail(FailCause lastFailCauseCode, String reason) {
+ if (mState == State.FAILED) {
+ /** TODO: Retrieve retry manager from connection itself */
if (!mRetryMgr.isRetryNeeded()) {
- if (!apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)){
+ if (!mRequestedApnType.equals(Phone.APN_TYPE_DEFAULT)) {
// if no more retries on a secondary APN attempt, tell the world and revert.
notifyDataConnection(Phone.REASON_APN_FAILED);
+ onEnableApn(apnTypeToId(mRequestedApnType), DISABLED);
return;
}
if (mReregisterOnReconnectFailure) {
- // We've re-registerd once now just retry forever.
+ // We've re-registered once now just retry forever.
mRetryMgr.retryForeverUsingLastTimeout();
} else {
- // Try to Re-register to the network.
+ // Try to re-register to the network.
log("PDP activate failed, Reregistering to the network");
mReregisterOnReconnectFailure = true;
- mPhone.getServiceStateTracker().reRegisterNetwork(null);
+ mGsmPhone.mSST.reRegisterNetwork(null);
mRetryMgr.resetRetryCount();
return;
}
@@ -1272,61 +814,48 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
AlarmManager am =
(AlarmManager) mPhone.getContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(INTENT_RECONNECT_ALARM);
- intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON, apnContext.getReason());
- // Should put an extra of apn type?
- intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_TYPE, apnContext.getApnType());
- apnContext.setReconnectIntent(PendingIntent.getBroadcast (
- mPhone.getContext(), 0, intent, 0));
+ intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON, reason);
+ mReconnectIntent = PendingIntent.getBroadcast(
+ mPhone.getContext(), 0, intent, 0);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + nextReconnectDelay,
- apnContext.getReconnectIntent());
+ mReconnectIntent);
mRetryMgr.increaseRetryCount();
if (!shouldPostNotification(lastFailCauseCode)) {
- Log.d(LOG_TAG, "NOT Posting GPRS Unavailable notification "
+ log("NOT Posting GPRS Unavailable notification "
+ "-- likely transient error");
} else {
- notifyNoData(lastFailCauseCode, apnContext);
+ notifyNoData(lastFailCauseCode);
}
}
}
- private void notifyNoData(GsmDataConnection.FailCause lastFailCauseCode,
- ApnContext apnContext) {
- if (DBG) log( "notifyNoData for type:" + apnContext.getApnType());
- apnContext.setState(State.FAILED);
- if (lastFailCauseCode.isPermanentFail()
- && (!apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT))) {
- mPhone.notifyDataConnectionFailed(apnContext.getReason(), apnContext.getApnType());
- }
+ private void notifyNoData(GsmDataConnection.FailCause lastFailCauseCode) {
+ setState(State.FAILED);
}
private void onRecordsLoaded() {
createAllApnList();
- ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
- if (defaultApnContext!=null ) {
- defaultApnContext.setReason(Phone.REASON_SIM_LOADED);
- if (defaultApnContext.getState() == State.FAILED) {
- if (DBG) log("onRecordsLoaded clean connection");
- cleanUpConnection(false, defaultApnContext);
- }
- sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA,defaultApnContext ));
+ if (mState == State.FAILED) {
+ cleanUpConnection(false, null);
}
+ sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA, Phone.REASON_SIM_LOADED));
}
- protected void onEnableNewApn(ApnContext apnContext ) {
+ @Override
+ protected void onEnableNewApn() {
+ log("onEnableNewApn E");
// change our retry manager to use the appropriate numbers for the new APN
- log("onEnableNewApn with ApnContext E");
- if (apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)) {
+ if (mRequestedApnType.equals(Phone.APN_TYPE_DEFAULT)) {
log("onEnableNewApn default type");
- ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
- mRetryMgr = defaultApnContext.getDataConnection().getRetryMgr();
+ mRetryMgr = mPendingDataConnection.getRetryMgr();
mRetryMgr.resetRetryCount();
- } else if (mApnToDataConnectionId.get(apnContext.getApnType()) == null) {
- log("onEnableNewApn ApnType=" + apnContext.getApnType() +
+ } else if (mApnToDataConnectionId.get(mRequestedApnType) == null) {
+ log("onEnableNewApn mRequestedApnType=" + mRequestedApnType +
" missing, make a new connection");
- int id = createDataConnection(apnContext.getApnType());
+ int id = createDataConnection(mRequestedApnType);
mRetryMgr = mDataConnections.get(id).getRetryMgr();
mRetryMgr.resetRetryCount();
} else {
@@ -1335,39 +864,27 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
// TODO: To support simultaneous PDP contexts, this should really only call
// cleanUpConnection if it needs to free up a GsmDataConnection.
- if (DBG) log("onEnableNewApn setup data");
- if (apnContext.getState() == State.FAILED) {
- if (DBG) log("previous state is FAILED, reset to IDLE");
- apnContext.setState(State.IDLE);
- }
- trySetupData(apnContext);
- log("onEnableNewApn with ApnContext X");
+ cleanUpConnection(true, Phone.REASON_APN_SWITCHED);
+ log("onEnableNewApn X");
}
@Override
- // TODO: We shouldnt need this.
protected boolean onTrySetupData(String reason) {
- return trySetupData(reason, Phone.APN_TYPE_DEFAULT);
- }
-
- protected boolean onTrySetupData(ApnContext apnContext) {
- return trySetupData(apnContext);
+ return trySetupData(reason);
}
@Override
- // TODO: Need to understand if more than DEFAULT is impacted?
protected void onRoamingOff() {
- trySetupData(Phone.REASON_ROAMING_OFF, Phone.APN_TYPE_DEFAULT);
+ trySetupData(Phone.REASON_ROAMING_OFF);
}
@Override
- // TODO: Need to understand if more than DEFAULT is impacted?
protected void onRoamingOn() {
if (getDataOnRoamingEnabled()) {
- trySetupData(Phone.REASON_ROAMING_ON, Phone.APN_TYPE_DEFAULT);
+ trySetupData(Phone.REASON_ROAMING_ON);
} else {
if (DBG) log("Tear down data connection on roaming.");
- cleanUpAllConnections(true, Phone.REASON_ROAMING_ON);
+ cleanUpConnection(true, Phone.REASON_ROAMING_ON);
}
}
@@ -1376,13 +893,13 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (mPhone.getSimulatedRadioControl() != null) {
// Assume data is connected on the simulator
// FIXME this can be improved
- // setState(State.CONNECTED);
+ setState(State.CONNECTED);
notifyDataConnection(null);
log("We're on the simulator; assuming data is connected");
}
- if (getOverallState() != State.IDLE) {
+ if (mState != State.IDLE) {
cleanUpConnection(true, null);
}
}
@@ -1400,30 +917,28 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
log("We're on the simulator; assuming radio off is meaningless");
} else {
if (DBG) log("Radio is off and clean up all connection");
- cleanUpAllConnections(false, Phone.REASON_RADIO_TURNED_OFF);
+ // TODO: Should we reset mRequestedApnType to "default"?
+ cleanUpConnection(false, Phone.REASON_RADIO_TURNED_OFF);
}
}
@Override
protected void onDataSetupComplete(AsyncResult ar) {
-
- ApnContext apnContext = null;
-
- if(ar.userObj instanceof ApnContext){
- apnContext = (ApnContext)ar.userObj;
+ /** TODO: Which connection is completing should be a parameter */
+ String reason = null;
+ if (ar.userObj instanceof String) {
+ reason = (String) ar.userObj;
}
if (ar.exception == null) {
- // Everything is setup
- // TODO: We should clear LinkProperties/Capabilities when torn down or disconnected
- if (DBG) {
- log(String.format("onDataSetupComplete: success apn=%s",
- apnContext.getWaitingApns().get(0).apn));
+ if(DBG) {
+ log(String.format("onDataSetupComplete: success apn=%s", mWaitingApns.get(0).apn));
}
- mLinkProperties = getLinkProperties(apnContext.getDataConnection());
- mLinkCapabilities = getLinkCapabilities(apnContext.getDataConnection());
+ // TODO: We should clear LinkProperties/Capabilities when torn down or disconnected
+ mLinkProperties = getLinkProperties(mPendingDataConnection);
+ mLinkCapabilities = getLinkCapabilities(mPendingDataConnection);
- ApnSetting apn = apnContext.getDataConnection().getApn();
+ ApnSetting apn = mPendingDataConnection.getApn();
if (apn.proxy != null && apn.proxy.length() != 0) {
try {
ProxyProperties proxy = new ProxyProperties(apn.proxy,
@@ -1436,34 +951,29 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
// everything is setup
- if(TextUtils.equals(apnContext.getApnType(),Phone.APN_TYPE_DEFAULT)) {
+ if (isApnTypeActive(Phone.APN_TYPE_DEFAULT)) {
SystemProperties.set("gsm.defaultpdpcontext.active", "true");
- if (canSetPreferApn && mPreferredApn == null) {
- log("PREFERED APN is null");
- mPreferredApn = apnContext.getApnSetting();
- if (mPreferredApn != null) {
- setPreferredApn(mPreferredApn.id);
- }
- }
+ if (canSetPreferApn && mPreferredApn == null) {
+ log("PREFERRED APN is null");
+ mPreferredApn = mActiveApn;
+ setPreferredApn(mPreferredApn.id);
+ }
} else {
SystemProperties.set("gsm.defaultpdpcontext.active", "false");
}
- notifyDefaultData(apnContext);
+ notifyDefaultData(reason);
// TODO: For simultaneous PDP support, we need to build another
// trigger another TRY_SETUP_DATA for the next APN type. (Note
// that the existing connection may service that type, in which
// case we should try the next type, etc.
- // I dont believe for simultaneous PDP you need to trigger. Each
- // Connection should be independent and they can be setup simultaneously
- // So, dont have to wait till one is finished.
} else {
GsmDataConnection.FailCause cause;
cause = (GsmDataConnection.FailCause) (ar.result);
if (DBG) {
String apnString;
try {
- apnString = apnContext.getWaitingApns().get(0).apn;
+ apnString = mWaitingApns.get(0).apn;
} catch (Exception e) {
apnString = "<unknown>";
}
@@ -1478,31 +988,28 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
// Count permanent failures and remove the APN we just tried
- // TODO: Where is mWaitingApnsPermanentFailureCountDown initialized
- if (cause.isPermanentFail())
- apnContext.decPermFailCount();
-
- apnContext.removeNextApn();
+ mWaitingApnsPermanentFailureCountDown -= cause.isPermanentFail() ? 1 : 0;
+ mWaitingApns.remove(0);
if (DBG) log(String.format("onDataSetupComplete: mWaitingApns.size=%d" +
" mWaitingApnsPermanenatFailureCountDown=%d",
- apnContext.getWaitingApns().size(), apnContext.getPermFailCount()));
+ mWaitingApns.size(), mWaitingApnsPermanentFailureCountDown));
// See if there are more APN's to try
- if (apnContext.getWaitingApns().isEmpty()) {
- if (apnContext.getPermFailCount() == 0) {
+ if (mWaitingApns.isEmpty()) {
+ if (mWaitingApnsPermanentFailureCountDown == 0) {
if (DBG) log("onDataSetupComplete: Permanent failures stop retrying");
- apnContext.setState(State.FAILED);
+ notifyNoData(cause);
notifyDataConnection(Phone.REASON_APN_FAILED);
} else {
if (DBG) log("onDataSetupComplete: Not all permanent failures, retry");
- startDelayedRetry(cause, apnContext);
+ startDelayedRetry(cause, reason);
}
} else {
if (DBG) log("onDataSetupComplete: Try next APN");
- apnContext.setState(State.SCANNING);
+ setState(State.SCANNING);
// Wait a bit before trying the next APN, so that
// we're not tying up the RIL command channel
- sendMessageDelayed(obtainMessage(EVENT_TRY_SETUP_DATA, apnContext), APN_DELAY_MILLIS);
+ sendMessageDelayed(obtainMessage(EVENT_TRY_SETUP_DATA, reason), APN_DELAY_MILLIS);
}
}
}
@@ -1512,31 +1019,16 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
*/
@Override
protected void onDisconnectDone(int connId, AsyncResult ar) {
- ApnContext apnContext = null;
-
if(DBG) log("EVENT_DISCONNECT_DONE connId=" + connId);
- if (ar.userObj instanceof ApnContext) {
- apnContext = (ApnContext) ar.userObj;
- }
-
- mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
- // Check if APN disabled.
- if (apnContext.getPendingAction() == ApnContext.PENDING_ACTION_APN_DISABLE) {
- mApnContexts.remove(apnContext.getApnType());
- return;
- }
-
- apnContext.setState(State.IDLE);
- apnContext.setApnSetting(null);
- if (TextUtils.equals(apnContext.getApnType(), Phone.APN_TYPE_DEFAULT)
- && retryAfterDisconnected(apnContext.getReason())) {
- SystemProperties.set("gsm.defaultpdpcontext.active", "false");
- trySetupData(apnContext);
+ String reason = null;
+ if (ar.userObj instanceof String) {
+ reason = (String) ar.userObj;
}
- else if (apnContext.getPendingAction() == ApnContext.PENDING_ACTION_RECONNECT)
- {
- apnContext.setPendingAction(ApnContext.PENDING_ACTION_NONE);
- trySetupData(apnContext);
+ setState(State.IDLE);
+ notifyDataConnection(reason);
+ mActiveApn = null;
+ if (retryAfterDisconnected(reason)) {
+ trySetupData(reason);
}
}
@@ -1554,7 +1046,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
protected void onPollPdp() {
- if (getOverallState() == State.CONNECTED) {
+ if (mState == State.CONNECTED) {
// only poll when connected
mPhone.mCM.getPDPContextList(this.obtainMessage(EVENT_GET_PDP_LIST_COMPLETE));
sendMessageDelayed(obtainMessage(EVENT_POLL_PDP), POLL_PDP_MILLIS);
@@ -1563,7 +1055,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
@Override
protected void onVoiceCallStarted() {
- if (isConnected() && ! mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed()) {
+ if (mState == State.CONNECTED && ! mGsmPhone.mSST.isConcurrentVoiceAndData()) {
stopNetStatPoll();
notifyDataConnection(Phone.REASON_VOICE_CALL_STARTED);
}
@@ -1571,8 +1063,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
@Override
protected void onVoiceCallEnded() {
- if (isConnected()) {
- if (!mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed()) {
+ if (mState == State.CONNECTED) {
+ if (!mGsmPhone.mSST.isConcurrentVoiceAndData()) {
startNetStatPoll();
notifyDataConnection(Phone.REASON_VOICE_CALL_ENDED);
} else {
@@ -1584,39 +1076,13 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
mRetryMgr.resetRetryCount();
mReregisterOnReconnectFailure = false;
// in case data setup was attempted when we were on a voice call
- trySetupData(Phone.REASON_VOICE_CALL_ENDED, Phone.APN_TYPE_DEFAULT);
+ trySetupData(Phone.REASON_VOICE_CALL_ENDED);
}
}
@Override
- protected void onCleanUpConnection(boolean tearDown, int apnId, String reason) {
- if (DBG) log("onCleanUpConnection");
- ApnContext apnContext = mApnContexts.get(apnIdToType(apnId));
- cleanUpConnection(tearDown, apnContext);
- }
-
- protected boolean isConnected() {
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- if (apnContext.getState() == State.CONNECTED) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- protected void notifyDataConnection(String reason) {
- if (DBG) log("notify all enabled connection for:" + reason);
- Iterator<ApnContext> it = mApnContexts.values().iterator();
- while (it.hasNext()) {
- ApnContext apnContext = it.next();
- if (DBG) log("notify for type:"+apnContext.getApnType());
- mPhone.notifyDataConnection(reason != null ? reason : apnContext.getReason(),
- apnContext.getApnType());
- }
- notifyDataAvailability(reason);
+ protected void onCleanUpConnection(boolean tearDown, String reason) {
+ cleanUpConnection(tearDown, reason);
}
/**
@@ -1625,7 +1091,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
*/
private void createAllApnList() {
mAllApns = new ArrayList<ApnSetting>();
- String operator = mPhone.mSIMRecords.getSIMOperatorNumeric();
+ String operator = mGsmPhone.mSIMRecords.getSIMOperatorNumeric();
if (operator != null) {
String selection = "numeric = '" + operator + "'";
@@ -1644,8 +1110,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (mAllApns.isEmpty()) {
if (DBG) log("No APN found for carrier: " + operator);
mPreferredApn = null;
- // TODO: What is the right behaviour?
- //notifyNoData(GsmDataConnection.FailCause.MISSING_UNKNOWN_APN);
+ notifyNoData(GsmDataConnection.FailCause.MISSING_UNKNOWN_APN);
} else {
mPreferredApn = getPreferredApn();
log("Get PreferredAPN");
@@ -1682,7 +1147,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
int id = mUniqueIdGenerator.getAndIncrement();
- DataConnection conn = GsmDataConnection.makeDataConnection(mPhone, id, rm);
+ DataConnection conn = GsmDataConnection.makeDataConnection(mGsmPhone, id, rm);
mDataConnections.put(id, conn);
mApnToDataConnectionId.put(apnType, id);
@@ -1726,7 +1191,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return apnList;
}
- String operator = mPhone.mSIMRecords.getSIMOperatorNumeric();
+ String operator = mGsmPhone.mSIMRecords.getSIMOperatorNumeric();
if (requestedApnType.equals(Phone.APN_TYPE_DEFAULT)) {
if (canSetPreferApn && mPreferredApn != null) {
@@ -1753,6 +1218,22 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return apnList;
}
+ /**
+ * Get next apn in waitingApns
+ * @return the first apn found in waitingApns, null if none
+ */
+ private ApnSetting getNextApn() {
+ ArrayList<ApnSetting> list = mWaitingApns;
+ ApnSetting apn = null;
+
+ if (list != null) {
+ if (!list.isEmpty()) {
+ apn = list.get(0);
+ }
+ }
+ return apn;
+ }
+
private String apnListToString (ArrayList<ApnSetting> apns) {
StringBuilder result = new StringBuilder();
for (int i = 0, size = apns.size(); i < size; i++) {
@@ -1763,9 +1244,9 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return result.toString();
}
- private void startDelayedRetry(GsmDataConnection.FailCause cause, ApnContext apnContext) {
- notifyNoData(cause, apnContext);
- reconnectAfterFail(cause, apnContext);
+ private void startDelayedRetry(GsmDataConnection.FailCause cause, String reason) {
+ notifyNoData(cause);
+ reconnectAfterFail(cause, reason);
}
private void setPreferredApn(int pos) {
@@ -1821,7 +1302,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
public void handleMessage (Message msg) {
if (DBG) log("GSMDataConnTrack handleMessage "+msg);
- if (!mPhone.mIsTheCurrentActivePhone) {
+ if (!mGsmPhone.mIsTheCurrentActivePhone) {
log("Ignore GSM msgs since GSM phone is inactive");
return;
}
@@ -1831,20 +1312,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
onRecordsLoaded();
break;
- case EVENT_ENABLE_NEW_APN:
- ApnContext apnContext = null;
- if (msg.obj instanceof ApnContext) {
- apnContext = (ApnContext)msg.obj;
- }
- onEnableNewApn(apnContext);
- break;
-
- case EVENT_DATA_CONNECTION_DETACHED:
- onDataConnectionDetached();
+ case EVENT_GPRS_DETACHED:
+ onGprsDetached();
break;
- case EVENT_DATA_CONNECTION_ATTACHED:
- onDataConnectionAttached();
+ case EVENT_GPRS_ATTACHED:
+ onGprsAttached();
break;
case EVENT_DATA_STATE_CHANGED:
@@ -1890,37 +1363,18 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
*/
log("[DSAC DEB] " + "EVENT_PS_RESTRICT_DISABLED " + mIsPsRestricted);
mIsPsRestricted = false;
- if (isConnected()) {
+ if (mState == State.CONNECTED) {
startNetStatPoll();
} else {
- // TODO: Should all PDN states be checked to fail?
if (mState == State.FAILED) {
- cleanUpAllConnections(false, Phone.REASON_PS_RESTRICT_ENABLED);
+ cleanUpConnection(false, Phone.REASON_PS_RESTRICT_ENABLED);
mRetryMgr.resetRetryCount();
mReregisterOnReconnectFailure = false;
}
- trySetupData(Phone.REASON_PS_RESTRICT_ENABLED, Phone.APN_TYPE_DEFAULT);
- }
- break;
- case EVENT_TRY_SETUP_DATA:
- if (msg.obj instanceof ApnContext) {
- onTrySetupData((ApnContext)msg.obj);
- } else {
- if (msg.obj instanceof String) {
- onTrySetupData((String)msg.obj);
- }
+ trySetupData(Phone.REASON_PS_RESTRICT_ENABLED);
}
break;
- case EVENT_CLEAN_UP_CONNECTION:
- boolean tearDown = (msg.arg1 == 0) ? false : true;
- if (msg.obj instanceof ApnContext) {
- cleanUpConnection(tearDown, (ApnContext)msg.obj);
- } else {
- Log.e(LOG_TAG,
- "[GsmDataConnectionTracker] connectpion cleanup request w/o apn context");
- }
- break;
default:
// handle the message in the super class DataConnectionTracker
super.handleMessage(msg);
@@ -1928,18 +1382,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
}
- protected int getApnProfileID(String apnType) {
- if (TextUtils.equals(apnType, Phone.APN_TYPE_IMS)) {
- return RILConstants.DATA_PROFILE_IMS;
- } else if (TextUtils.equals(apnType, Phone.APN_TYPE_FOTA)) {
- return RILConstants.DATA_PROFILE_FOTA;
- } else if (TextUtils.equals(apnType, Phone.APN_TYPE_CBS)) {
- return RILConstants.DATA_PROFILE_CBS;
- } else {
- return RILConstants.DATA_PROFILE_DEFAULT;
- }
- }
-
@Override
protected void log(String s) {
Log.d(LOG_TAG, "[GsmDataConnectionTracker] " + s);
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
index 21a12f1..f576b4e 100755
--- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
@@ -99,7 +99,7 @@ final class GsmSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public int dispatchMessage(SmsMessageBase smsb) {
+ protected int dispatchMessage(SmsMessageBase smsb) {
// If sms is null, means there was a parsing error.
if (smsb == null) {
@@ -383,7 +383,7 @@ final class GsmSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public void activateCellBroadcastSms(int activate, Message response) {
+ protected void activateCellBroadcastSms(int activate, Message response) {
// Unless CBS is implemented for GSM, this point should be unreachable.
Log.e(TAG, "Error! The functionality cell broadcast sms is not implemented for GSM.");
response.recycle();
@@ -391,7 +391,7 @@ final class GsmSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public void getCellBroadcastSmsConfig(Message response){
+ protected void getCellBroadcastSmsConfig(Message response){
// Unless CBS is implemented for GSM, this point should be unreachable.
Log.e(TAG, "Error! The functionality cell broadcast sms is not implemented for GSM.");
response.recycle();
@@ -399,7 +399,7 @@ final class GsmSMSDispatcher extends SMSDispatcher {
/** {@inheritDoc} */
@Override
- public void setCellBroadcastConfig(int[] configValuesArray, Message response) {
+ protected void setCellBroadcastConfig(int[] configValuesArray, Message response) {
// Unless CBS is implemented for GSM, this point should be unreachable.
Log.e(TAG, "Error! The functionality cell broadcast sms is not implemented for GSM.");
response.recycle();
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index 416184d..ac83808 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -278,8 +278,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
* @param what what code of message when delivered
* @param obj placed in Message.obj
*/
- @Override
- public void registerForDataConnectionAttached(Handler h, int what, Object obj) {
+ void registerForGprsAttached(Handler h, int what, Object obj) {
Registrant r = new Registrant(h, what, obj);
gprsAttachedRegistrants.add(r);
@@ -288,8 +287,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
}
}
- @Override
- public void unregisterForDataConnectionAttached(Handler h) {
+ void unregisterForGprsAttached(Handler h) {
gprsAttachedRegistrants.remove(h);
}
@@ -331,7 +329,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
* @param what what code of message when delivered
* @param obj placed in Message.obj
*/
- public void registerForPsRestrictedEnabled(Handler h, int what, Object obj) {
+ void registerForPsRestrictedEnabled(Handler h, int what, Object obj) {
Log.d(LOG_TAG, "[DSAC DEB] " + "registerForPsRestrictedEnabled ");
Registrant r = new Registrant(h, what, obj);
psRestrictEnabledRegistrants.add(r);
@@ -341,7 +339,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
}
}
- public void unregisterForPsRestrictedEnabled(Handler h) {
+ void unregisterForPsRestrictedEnabled(Handler h) {
psRestrictEnabledRegistrants.remove(h);
}
@@ -351,7 +349,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
* @param what what code of message when delivered
* @param obj placed in Message.obj
*/
- public void registerForPsRestrictedDisabled(Handler h, int what, Object obj) {
+ void registerForPsRestrictedDisabled(Handler h, int what, Object obj) {
Log.d(LOG_TAG, "[DSAC DEB] " + "registerForPsRestrictedDisabled ");
Registrant r = new Registrant(h, what, obj);
psRestrictDisabledRegistrants.add(r);
@@ -361,7 +359,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
}
}
- public void unregisterForPsRestrictedDisabled(Handler h) {
+ void unregisterForPsRestrictedDisabled(Handler h) {
psRestrictDisabledRegistrants.remove(h);
}
@@ -569,21 +567,33 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
&& cm.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) {
cm.setRadioPower(true, null);
} else if (!mDesiredPowerState && cm.getRadioState().isOn()) {
+ DataConnectionTracker dcTracker = phone.mDataConnection;
+ if (! dcTracker.isDataConnectionAsDesired()) {
+ EventLog.writeEvent(EventLogTags.DATA_NETWORK_STATUS_ON_RADIO_OFF,
+ dcTracker.getStateInString(), dcTracker.getAnyDataEnabled() ? 1 : 0);
+ }
// If it's on and available and we want it off gracefully
powerOffRadioSafely();
} // Otherwise, we're in the desired state
}
@Override
- public void powerOffRadioSafely() {
- // Cleanup all connections
+ protected void powerOffRadioSafely() {
+ // clean data connection
DataConnectionTracker dcTracker = phone.mDataConnection;
- Message msg = dcTracker.obtainMessage(DataConnectionTracker.EVENT_CLEAN_UP_ALL_CONNECTIONS);
+ Message msg = dcTracker.obtainMessage(DataConnectionTracker.EVENT_CLEAN_UP_CONNECTION);
+ msg.arg1 = 1; // tearDown is true
+ msg.obj = GSMPhone.REASON_RADIO_TURNED_OFF;
dcTracker.sendMessage(msg);
// poll data state up to 15 times, with a 100ms delay
// totaling 1.5 sec. Normal data disable action will finish in 100ms.
for (int i = 0; i < MAX_NUM_DATA_STATE_READS; i++) {
+ if (dcTracker.getState() != DataConnectionTracker.State.CONNECTED
+ && dcTracker.getState() != DataConnectionTracker.State.DISCONNECTING) {
+ Log.d(LOG_TAG, "Data shutdown complete.");
+ break;
+ }
SystemClock.sleep(DATA_STATE_POLL_SLEEP_MS);
}
@@ -1063,7 +1073,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
}
if (hasNetworkTypeChanged) {
- phone.notifyDataConnection(Phone.REASON_NW_TYPE_CHANGED, Phone.APN_TYPE_ALL);
+ phone.notifyDataConnection();
}
if (hasRoamingOn) {
@@ -1391,15 +1401,11 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
return gprsState;
}
- public int getCurrentDataConnectionState() {
- return gprsState;
- }
-
/**
* @return true if phone is camping on a technology (eg UMTS)
* that could support voice and data simultaneously.
*/
- public boolean isConcurrentVoiceAndDataAllowed() {
+ boolean isConcurrentVoiceAndData() {
return (networkType >= DATA_ACCESS_UMTS);
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
index 11ce83e..3b133da 100755
--- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
@@ -35,7 +35,6 @@ import com.android.internal.telephony.IccUtils;
import com.android.internal.telephony.IccVmFixedException;
import com.android.internal.telephony.IccVmNotSupportedException;
import com.android.internal.telephony.MccTable;
-import com.android.internal.telephony.PhoneBase;
import java.util.ArrayList;
@@ -166,7 +165,7 @@ public final class SIMRecords extends IccRecords {
// ***** Constructor
- public SIMRecords(PhoneBase p) {
+ SIMRecords(GSMPhone p) {
super(p);
adnCache = new AdnRecordCache(phone);
@@ -365,7 +364,7 @@ public final class SIMRecords extends IccRecords {
countVoiceMessages = countWaiting;
- phone.notifyMessageWaitingIndicator();
+ ((GSMPhone) phone).notifyMessageWaitingIndicator();
try {
if (efMWIS != null) {
@@ -414,7 +413,7 @@ public final class SIMRecords extends IccRecords {
callForwardingEnabled = enable;
- phone.notifyCallForwardingIndicator();
+ ((GSMPhone) phone).notifyCallForwardingIndicator();
try {
if (mEfCfis != null) {
@@ -471,7 +470,7 @@ public final class SIMRecords extends IccRecords {
/** Returns the 5 or 6 digit MCC/MNC of the operator that
* provided the SIM card. Returns null of SIM is not yet ready
*/
- public String getSIMOperatorNumeric() {
+ String getSIMOperatorNumeric() {
if (imsi == null || mncLength == UNINITIALIZED || mncLength == UNKNOWN) {
return null;
}
@@ -548,7 +547,7 @@ public final class SIMRecords extends IccRecords {
// finally have both the imsi and the mncLength and can parse the imsi properly
MccTable.updateMccMncConfiguration(phone, imsi.substring(0, 3 + mncLength));
}
- phone.mSimCard.broadcastIccStateChangedIntent(
+ ((GSMPhone) phone).mSimCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_IMSI, null);
break;
@@ -703,7 +702,7 @@ public final class SIMRecords extends IccRecords {
countVoiceMessages = -1;
}
- phone.notifyMessageWaitingIndicator();
+ ((GSMPhone) phone).notifyMessageWaitingIndicator();
break;
case EVENT_GET_VOICE_MAIL_INDICATOR_CPHS_DONE:
@@ -732,7 +731,7 @@ public final class SIMRecords extends IccRecords {
countVoiceMessages = 0;
}
- phone.notifyMessageWaitingIndicator();
+ ((GSMPhone) phone).notifyMessageWaitingIndicator();
}
break;
@@ -843,7 +842,7 @@ public final class SIMRecords extends IccRecords {
callForwardingEnabled =
((data[0] & CFF_LINE1_MASK) == CFF_UNCONDITIONAL_ACTIVE);
- phone.notifyCallForwardingIndicator();
+ ((GSMPhone) phone).notifyCallForwardingIndicator();
}
break;
@@ -1043,7 +1042,7 @@ public final class SIMRecords extends IccRecords {
// Refer TS 51.011 Section 10.3.46 for the content description
callForwardingEnabled = ((data[1] & 0x01) != 0);
- phone.notifyCallForwardingIndicator();
+ ((GSMPhone) phone).notifyCallForwardingIndicator();
break;
case EVENT_GET_CSP_CPHS_DONE:
@@ -1153,7 +1152,7 @@ public final class SIMRecords extends IccRecords {
System.arraycopy(ba, 1, pdu, 0, n - 1);
SmsMessage message = SmsMessage.createFromPdu(pdu);
- phone.mSMS.dispatchMessage(message);
+ ((GSMPhone) phone).mSMS.dispatchMessage(message);
}
}
@@ -1179,7 +1178,7 @@ public final class SIMRecords extends IccRecords {
System.arraycopy(ba, 1, pdu, 0, n - 1);
SmsMessage message = SmsMessage.createFromPdu(pdu);
- phone.mSMS.dispatchMessage(message);
+ ((GSMPhone) phone).mSMS.dispatchMessage(message);
// 3GPP TS 51.011 v5.0.0 (20011-12) 10.5.3
// 1 == "received by MS from network; message read"
@@ -1229,7 +1228,7 @@ public final class SIMRecords extends IccRecords {
recordsLoadedRegistrants.notifyRegistrants(
new AsyncResult(null, null, null));
- phone.mSimCard.broadcastIccStateChangedIntent(
+ ((GSMPhone) phone).mSimCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_LOADED, null);
}
@@ -1250,11 +1249,11 @@ public final class SIMRecords extends IccRecords {
}
}
- public void onSimReady() {
+ private void onSimReady() {
/* broadcast intent SIM_READY here so that we can make sure
READY is sent before IMSI ready
*/
- phone.mSimCard.broadcastIccStateChangedIntent(
+ ((GSMPhone) phone).mSimCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_READY, null);
fetchSimRecords();
diff --git a/telephony/java/com/android/internal/telephony/gsm/SimCard.java b/telephony/java/com/android/internal/telephony/gsm/SimCard.java
index 5a2f871..835cb29 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SimCard.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SimCard.java
@@ -19,8 +19,6 @@ package com.android.internal.telephony.gsm;
import android.util.Log;
import com.android.internal.telephony.IccCard;
-import com.android.internal.telephony.PhoneBase;
-import android.os.SystemProperties;
/**
* {@hide}
@@ -36,21 +34,6 @@ public final class SimCard extends IccCard {
updateStateProperty();
}
- /**
- * We have the Sim card for LTE on CDMA phone
- */
- public SimCard(PhoneBase phone, String logTag, Boolean dbg) {
- super(phone, logTag, dbg);
- mPhone.mCM.registerForSIMLockedOrAbsent(mHandler, EVENT_ICC_LOCKED_OR_ABSENT, null);
- mPhone.mCM.registerForOffOrNotAvailable(mHandler, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
- mPhone.mCM.registerForSIMReady(mHandler, EVENT_ICC_READY, null);
- updateStateProperty();
-
- if(SystemProperties.getBoolean("ro.mot.lte_on_cdma", false)) {
- mPhone.mCM.registerForNVReady(mHandler, EVENT_ICC_READY, null);
- }
- }
-
@Override
public void dispose() {
//Unregister for all events
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/ApnSettingTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/ApnSettingTest.java
index a1078c1..1032074 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/ApnSettingTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/ApnSettingTest.java
@@ -58,21 +58,21 @@ public class ApnSettingTest extends TestCase {
testString = "Vodafone IT,web.omnitel.it,,,,,,,,,222,10,,DUN";
expected_apn = new ApnSetting(
-1, "22210", "Vodafone IT", "web.omnitel.it", "", "",
- "", "", "", "", "", 0, dunTypes, "IP", "IP", true, 0, 0);
+ "", "", "", "", "", 0, dunTypes, "IP", "IP");
assertApnSettingEqual(expected_apn, ApnSetting.fromString(testString));
// A v2 string.
testString = "[ApnSettingV2] Name,apn,,,,,,,,,123,45,,mms|*,IPV6,IP";
expected_apn = new ApnSetting(
-1, "12345", "Name", "apn", "", "",
- "", "", "", "", "", 0, mmsTypes, "IPV6", "IP", true, 0, 0);
+ "", "", "", "", "", 0, mmsTypes, "IPV6", "IP");
assertApnSettingEqual(expected_apn, ApnSetting.fromString(testString));
// A v2 string with spaces.
testString = "[ApnSettingV2] Name,apn, ,,,,,,,,123,45,,mms|*,IPV4V6, IP";
expected_apn = new ApnSetting(
-1, "12345", "Name", "apn", "", "",
- "", "", "", "", "", 0, mmsTypes, "IPV4V6", "IP", true, 0, 0);
+ "", "", "", "", "", 0, mmsTypes, "IPV4V6", "IP");
assertApnSettingEqual(expected_apn, ApnSetting.fromString(testString));
// Return null if insufficient fields given.
@@ -87,7 +87,7 @@ public class ApnSettingTest extends TestCase {
String[] incorrectTypes = {"mms|*", "IPV6"};
expected_apn = new ApnSetting(
-1, "12345", "Name", "apn", "", "",
- "", "", "", "", "", 0, incorrectTypes, "IP", "IP", true, 0, 0);
+ "", "", "", "", "", 0, incorrectTypes, "IP", "IP");
assertApnSettingEqual(expected_apn, ApnSetting.fromString(testString));
}
@@ -98,7 +98,7 @@ public class ApnSettingTest extends TestCase {
ApnSetting apn = new ApnSetting(
99, "12345", "Name", "apn", "proxy", "port",
"mmsc", "mmsproxy", "mmsport", "user", "password", 0,
- types, "IPV4V6", "IP", true, 0, 0);
+ types, "IPV4V6", "IP");
String expected = "[ApnSettingV2] Name, 99, 12345, apn, proxy, " +
"mmsc, mmsproxy, mmsport, port, 0, default | *, " +
"IPV4V6, IP";
diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java
index f6317f5..e6decc8 100644
--- a/wifi/java/android/net/wifi/WifiConfigStore.java
+++ b/wifi/java/android/net/wifi/WifiConfigStore.java
@@ -461,6 +461,25 @@ class WifiConfigStore {
}
/**
+ * set IP configuration for a given network id
+ */
+ static void setIpConfiguration(int netId, DhcpInfoInternal dhcpInfo) {
+ LinkProperties linkProperties = dhcpInfo.makeLinkProperties();
+
+ synchronized (sConfiguredNetworks) {
+ WifiConfiguration config = sConfiguredNetworks.get(netId);
+ if (config != null) {
+ // add old proxy details
+ if(config.linkProperties != null) {
+ linkProperties.setHttpProxy(config.linkProperties.getHttpProxy());
+ }
+ config.linkProperties = linkProperties;
+ }
+ }
+ }
+
+
+ /**
* Fetch the proxy properties for a given network id
*/
static ProxyProperties getProxyProperties(int netId) {
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 589d88c..717dcf0 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -2510,6 +2510,7 @@ public class WifiStateMachine extends HierarchicalStateMachine {
synchronized (mDhcpInfoInternal) {
mDhcpInfoInternal = dhcpInfoInternal;
}
+ WifiConfigStore.setIpConfiguration(mLastNetworkId, dhcpInfoInternal);
sendMessage(CMD_IP_CONFIG_SUCCESS);
} else {
Log.d(TAG, "DHCP request failed: " +