summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/util/NativeTextHelper.java92
-rw-r--r--core/res/res/values-zh-rCN/strings.xml4
-rw-r--r--core/res/res/values-zh-rHK/strings.xml4
-rwxr-xr-xcore/res/res/values/config.xml43
-rw-r--r--core/res/res/values/strings.xml5
-rwxr-xr-xcore/res/res/values/symbols.xml15
-rw-r--r--packages/Keyguard/src/com/android/keyguard/CarrierText.java45
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java61
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java12
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java31
11 files changed, 331 insertions, 0 deletions
diff --git a/core/java/android/util/NativeTextHelper.java b/core/java/android/util/NativeTextHelper.java
new file mode 100644
index 0000000..eb380e9
--- /dev/null
+++ b/core/java/android/util/NativeTextHelper.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2015, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package android.util;
+
+import android.content.Context;
+
+/**
+ *@hide
+ */
+public class NativeTextHelper {
+
+ /**
+ * parse the string to current language.
+ *
+ * @param context base context of the application
+ * @param originalString original string
+ * @param defPackage the target package where the local language strings
+ * defined
+ * @param originNamesId the id of the original string array.
+ * @param localNamesId the id of the local string keys.
+ * @return local language string
+ */
+ private static final String getLocalString(Context context, String originalString,
+ String defPackage, int originNamesId, int localNamesId) {
+ String[] origNames = context.getResources().getStringArray(originNamesId);
+ String[] localNames = context.getResources().getStringArray(localNamesId);
+ for (int i = 0; i < origNames.length; i++) {
+ if (origNames[i].equalsIgnoreCase(originalString)) {
+ return context.getString(context.getResources().getIdentifier(localNames[i],
+ "string", defPackage));
+ }
+ }
+ return originalString;
+ }
+
+ /**
+ * parse the string to current language string in public resources.
+ *
+ * @param context base context of the application
+ * @param originalString original string
+ * @param originNamesId the id of the original string array.
+ * @param localNamesId the id of the local string keys.
+ * @return local language string
+ */
+ public static final String getLocalString(Context context, String originalString,
+ int originNamesId, int localNamesId) {
+ return getLocalString(context, originalString, "android", originNamesId, localNamesId);
+ }
+
+ /**
+ * parse the string to current language string in current resources.
+ *
+ * @param context base context of the application
+ * @param originalString original string
+ * @param originNamesId the id of the original string array.
+ * @param localNamesId the id of the local string keys.
+ * @return local language string
+ */
+ public static final String getInternalLocalString(Context context, String originalString,
+ int originNamesId,
+ int localNamesId) {
+ return getLocalString(context, originalString, context.getPackageName(), originNamesId,
+ localNamesId);
+ }
+
+}
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index fcfc1ff..e2b0704 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1523,4 +1523,8 @@
<item quantity="other">已选择 <xliff:g id="COUNT_1">%1$d</xliff:g> 项</item>
<item quantity="one">已选择 <xliff:g id="COUNT_0">%1$d</xliff:g> 项</item>
</plurals>
+ <!-- Carrier Name -->
+ <string name="China_Mobile">中国移动</string>
+ <string name="China_Unicom">中国联通</string>
+ <string name="China_Telecom">中国电信</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index ffa6fb1..188723e 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1516,4 +1516,8 @@
<item quantity="other">已選取 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目</item>
<item quantity="one">已選取 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目</item>
</plurals>
+ <!-- Carrier Name -->
+ <string name="China_Mobile">中國移動</string>
+ <string name="China_Unicom">中國聯通</string>
+ <string name="China_Telecom">中國電信</string>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index e4089b5..ffae186 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2323,4 +2323,47 @@
<!-- Configuration that determines if PROTOCOL_ERRORS is to be treated as a
permanent error -->
<bool translatable="false" name="config_protocol_errors_perm_failure">true</bool>
+
+ <string-array name="origin_carrier_names">
+ <item>CHINA\u0020\u0020MOBILE</item>
+ <item>CMCC</item>
+ <item>CHN-UNICOM</item>
+ <item>China Mobile</item>
+ <item>China Unicom</item>
+ <item>China Telecom</item>
+ <item>中国移动</item>
+ <item>中国联通</item>
+ <item>中国电信</item>
+ <item>中國移動</item>
+ <item>中國聯通</item>
+ <item>中國電信</item>
+ <item>Searching for Service</item>
+ </string-array>
+
+ <string-array name="locale_carrier_names">
+ <item>China_Mobile</item>
+ <item>China_Mobile</item>
+ <item>China_Unicom</item>
+ <item>China_Mobile</item>
+ <item>China_Unicom</item>
+ <item>China_Telecom</item>
+ <item>China_Mobile</item>
+ <item>China_Unicom</item>
+ <item>China_Telecom</item>
+ <item>China_Mobile</item>
+ <item>China_Unicom</item>
+ <item>China_Telecom</item>
+ <item>roamingTextSearching</item>
+ </string-array>
+
+ <!-- monitor locale change -->
+ <bool name="config_monitor_locale_change">false</bool>
+
+ <!-- display for radio tech -->
+ <bool name="config_display_rat">false</bool>
+
+ <!-- config 2G/3G/4G RAT strings for carriers -->
+ <string name="config_rat_2g" translatable="false">2G</string>
+ <string name="config_rat_3g" translatable="false">3G</string>
+ <string name="config_rat_4g" translatable="false">4G</string>
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index bec1600..51440e4 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -4120,4 +4120,9 @@
<item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> selected</item>
<item quantity="other"><xliff:g id="count" example="3">%1$d</xliff:g> selected</item>
</plurals>
+
+ <!-- Carrier Name -->
+ <string name="China_Mobile">China Mobile</string>
+ <string name="China_Unicom">China Unicom</string>
+ <string name="China_Telecom">China Telecom</string>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index bbf882a..535dbe1 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2376,4 +2376,19 @@
<!-- Data Connectivity Error Configurations -->
<java-symbol type="bool" name="config_reject_ggsn_perm_failure" />
<java-symbol type="bool" name="config_protocol_errors_perm_failure" />
+
+ <!-- config 2G/3G/4G RAT strings for carriers -->
+ <java-symbol type="string" name="config_rat_2g" />
+ <java-symbol type="string" name="config_rat_3g" />
+ <java-symbol type="string" name="config_rat_4g" />
+
+ <!-- monitor locale change -->
+ <java-symbol type="bool" name="config_monitor_locale_change" />
+
+ <!-- display for radio tech -->
+ <java-symbol type="bool" name="config_display_rat" />
+
+ <java-symbol type="array" name="origin_carrier_names" />
+ <java-symbol type="array" name="locale_carrier_names" />
+
</resources>
diff --git a/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
index f04db02..230ad42 100644
--- a/packages/Keyguard/src/com/android/keyguard/CarrierText.java
+++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
@@ -28,6 +28,7 @@ import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
+import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.method.SingleLineTransformationMethod;
import android.util.AttributeSet;
@@ -153,15 +154,59 @@ public class CarrierText extends TextView {
protected void updateCarrierText() {
boolean allSimsMissing = true;
boolean anySimReadyAndInService = false;
+ boolean showLocale = getContext().getResources().getBoolean(
+ com.android.internal.R.bool.config_monitor_locale_change);
+ boolean showRat = getContext().getResources().getBoolean(
+ com.android.internal.R.bool.config_display_rat);
CharSequence displayText = null;
List<SubscriptionInfo> subs = mKeyguardUpdateMonitor.getSubscriptionInfo(false);
final int N = subs.size();
if (DEBUG) Log.d(TAG, "updateCarrierText(): " + N);
for (int i = 0; i < N; i++) {
+ CharSequence networkClass = "";
int subId = subs.get(i).getSubscriptionId();
State simState = mKeyguardUpdateMonitor.getSimState(subId);
+ if (showRat) {
+ ServiceState ss = mKeyguardUpdateMonitor.mServiceStates.get(subId);
+ TelephonyManager tm = new TelephonyManager(getContext());
+ if (ss != null && (ss.getDataRegState() == ServiceState.STATE_IN_SERVICE
+ || ss.getVoiceRegState() == ServiceState.STATE_IN_SERVICE)) {
+ int networkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
+ if (ss.getRilDataRadioTechnology() !=
+ ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) {
+ networkType = ss.getDataNetworkType();
+ } else if (ss.getRilVoiceRadioTechnology() !=
+ ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) {
+ networkType = ss.getVoiceNetworkType();
+ }
+ networkClass = tm.networkClassToString(networkType);
+ }
+ }
CharSequence carrierName = subs.get(i).getCarrierName();
+ if (showLocale || showRat) {
+ String[] names = carrierName.toString().split(mSeparator.toString(), 2);
+ StringBuilder newCarrierName = new StringBuilder();
+ for (int j = 0; j < names.length; j++) {
+ if (showLocale) {
+ names[j] = android.util.NativeTextHelper.getLocalString(getContext(),
+ names[j], com.android.internal.R.array.origin_carrier_names,
+ com.android.internal.R.array.locale_carrier_names);
+ }
+ if (!TextUtils.isEmpty(names[j])) {
+ if (!TextUtils.isEmpty(networkClass) && showRat) {
+ names[j] = new StringBuilder().append(names[j]).append(" ")
+ .append(networkClass).toString();
+ }
+ if (j > 0 && names[j].equals(names[j-1])) {
+ continue;
+ }
+ if (j > 0) newCarrierName.append(mSeparator);
+ newCarrierName.append(names[j]);
+ }
+ }
+ carrierName = newCarrierName.toString();
+ }
CharSequence carrierTextForSimState = getCarrierTextForSimState(simState, carrierName);
if (DEBUG) {
Log.d(TAG, "Handling (subId=" + subId + "): " + simState + " " + carrierName);
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 2f00bb1..eabfc34 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -141,6 +141,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private static final int MSG_SIM_SUBSCRIPTION_INFO_CHANGED = 328;
private static final int MSG_AIRPLANE_MODE_CHANGED = 329;
private static final int MSG_SERVICE_STATE_CHANGE = 330;
+ private static final int MSG_LOCALE_CHANGED = 500;
private static KeyguardUpdateMonitor sInstance;
@@ -247,6 +248,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
case MSG_SERVICE_STATE_CHANGE:
handleServiceStateChange(msg.arg1, (ServiceState) msg.obj);
break;
+ case MSG_LOCALE_CHANGED:
+ handleLocaleChanged();
+ break;
}
}
};
@@ -593,6 +597,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
mHandler.sendMessage(
mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState));
+ } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) {
+ mHandler.sendEmptyMessage(MSG_LOCALE_CHANGED);
}
}
};
@@ -836,6 +842,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ filter.addAction(Intent.ACTION_LOCALE_CHANGED);
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
filter.addAction(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED);
filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
@@ -1159,6 +1166,18 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
/**
+ * Handle {@link #MSG_LOCALE_CHANGED}
+ */
+ private void handleLocaleChanged() {
+ for (int j = 0; j < mCallbacks.size(); j++) {
+ KeyguardUpdateMonitorCallback cb = mCallbacks.get(j).get();
+ if (cb != null) {
+ cb.onRefreshCarrierInfo();
+ }
+ }
+ }
+
+ /**
* Handle {@link #MSG_SERVICE_STATE_CHANGE}
*/
private void handleServiceStateChange(int subId, ServiceState serviceState) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index 62f1ec4..631a4d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -57,6 +57,12 @@ public class MobileSignalController extends SignalController<
// @VisibleForDemoMode
final SparseArray<MobileIconGroup> mNetworkToIconLookup;
+ private boolean mLastShowSpn;
+ private String mLastSpn;
+ private String mLastDataSpn;
+ private boolean mLastShowPlmn;
+ private String mLastPlmn;
+
// Since some pieces of the phone state are interdependent we store it locally,
// this could potentially become part of MobileState for simplification/complication
// of code.
@@ -333,6 +339,11 @@ public class MobileSignalController extends SignalController<
} else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
updateDataSim();
notifyListenersIfNecessary();
+ } else if (action.equals(Intent.ACTION_LOCALE_CHANGED)) {
+ if (mConfig.showLocale) {
+ updateNetworkName(mLastShowSpn, mLastSpn, mLastDataSpn, mLastShowPlmn, mLastPlmn);
+ notifyListenersIfNecessary();
+ }
}
}
@@ -352,27 +363,75 @@ public class MobileSignalController extends SignalController<
}
}
+ private String getLocalString(String originalString) {
+ return android.util.NativeTextHelper.getLocalString(mContext, originalString,
+ com.android.internal.R.array.origin_carrier_names,
+ com.android.internal.R.array.locale_carrier_names);
+ }
+
+ private String getNetworkClassString(ServiceState state) {
+ if (state != null && (state.getDataRegState() == ServiceState.STATE_IN_SERVICE ||
+ state.getVoiceRegState() == ServiceState.STATE_IN_SERVICE)) {
+ int voiceNetType = state.getVoiceNetworkType();
+ int dataNetType = state.getDataNetworkType();
+ int chosenNetType =
+ ((dataNetType == TelephonyManager.NETWORK_TYPE_UNKNOWN)
+ ? voiceNetType : dataNetType);
+ TelephonyManager tm = (TelephonyManager)mContext.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ return tm.networkClassToString(chosenNetType);
+ } else {
+ return "";
+ }
+ }
+
/**
* Updates the network's name based on incoming spn and plmn.
*/
void updateNetworkName(boolean showSpn, String spn, String dataSpn,
boolean showPlmn, String plmn) {
+ mLastShowSpn = showSpn;
+ mLastSpn = spn;
+ mLastDataSpn = dataSpn;
+ mLastShowPlmn = showPlmn;
+ mLastPlmn = plmn;
if (CHATTY) {
Log.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn
+ " spn=" + spn + " dataSpn=" + dataSpn
+ " showPlmn=" + showPlmn + " plmn=" + plmn);
}
+ if (mConfig.showLocale) {
+ if (showSpn && !TextUtils.isEmpty(spn)) {
+ spn = getLocalString(spn);
+ }
+ if (showSpn && !TextUtils.isEmpty(dataSpn)) {
+ dataSpn = getLocalString(dataSpn);
+ }
+ if (showPlmn && !TextUtils.isEmpty(plmn)) {
+ plmn = getLocalString(plmn);
+ }
+ }
+ if (showPlmn && showSpn && !TextUtils.isEmpty(spn) && !TextUtils.isEmpty(plmn)
+ && plmn.equals(spn)) {
+ showSpn = false;
+ }
+ String networkClass = getNetworkClassString(mServiceState);
StringBuilder str = new StringBuilder();
StringBuilder strData = new StringBuilder();
if (showPlmn && plmn != null) {
str.append(plmn);
strData.append(plmn);
+ if (mConfig.showRat) {
+ str.append(" ").append(networkClass);
+ strData.append(" ").append(networkClass);
+ }
}
if (showSpn && spn != null) {
if (str.length() != 0) {
str.append(mNetworkNameSeparator);
}
str.append(spn);
+ if (mConfig.showRat) str.append(" ").append(networkClass);
}
if (str.length() != 0) {
mCurrentState.networkName = str.toString();
@@ -384,6 +443,7 @@ public class MobileSignalController extends SignalController<
strData.append(mNetworkNameSeparator);
}
strData.append(dataSpn);
+ if (mConfig.showRat) strData.append(" ").append(networkClass);
}
if (strData.length() != 0) {
mCurrentState.networkNameData = strData.toString();
@@ -694,6 +754,7 @@ public class MobileSignalController extends SignalController<
+ " dataState=" + state.getDataRegState());
}
mServiceState = state;
+ updateNetworkName(mLastShowSpn, mLastSpn, mLastDataSpn, mLastShowPlmn, mLastPlmn);
updateTelephony();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 9008e51..8fbf4b6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -210,6 +210,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
filter.addAction(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
+ filter.addAction(Intent.ACTION_LOCALE_CHANGED);
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
mContext.registerReceiver(this, filter, null, mReceiverHandler);
mListening = true;
@@ -377,6 +378,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
} else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
// Might have different subscriptions now.
updateMobileControllers();
+ } else if (action.equals(Intent.ACTION_LOCALE_CHANGED)) {
+ for (MobileSignalController controller : mMobileSignalControllers.values()) {
+ controller.handleBroadcast(intent);
+ }
} else if (action.equals(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED)) {
mLastServiceState = ServiceState.newFromBundle(intent.getExtras());
if (mMobileSignalControllers.size() == 0) {
@@ -828,6 +833,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
boolean hspaDataDistinguishable;
boolean readIconsFromXml;
boolean showRsrpSignalLevelforLTE;
+ boolean showLocale;
+ boolean showRat;
static Config readConfig(Context context) {
Config config = new Config();
@@ -842,6 +849,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
config.readIconsFromXml = res.getBoolean(R.bool.config_read_icons_from_xml);
config.showRsrpSignalLevelforLTE =
res.getBoolean(R.bool.config_showRsrpSignalLevelforLTE);
+ config.showLocale =
+ res.getBoolean(com.android.internal.R.bool.config_monitor_locale_change);
+ config.showRat =
+ res.getBoolean(com.android.internal.R.bool.config_display_rat);
+
return config;
}
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 4799753..8ea496b 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -1642,6 +1642,37 @@ public class TelephonyManager {
}
}
+ /**
+ * convert network class to string base on network type
+ * @param type for which network type is returned
+ * @return the network class type string
+ * @hide
+ */
+ public String networkClassToString(int type) {
+ String ratClassName = "";
+ int networkClass = getNetworkClass(type);
+ Rlog.d(TAG, "networkType = " + type + " networkClass = " + networkClass);
+ if (mContext == null) return null;
+ switch (networkClass) {
+ case TelephonyManager.NETWORK_CLASS_2_G:
+ ratClassName = mContext.getResources().getString(
+ com.android.internal.R.string.config_rat_2g);
+ break;
+ case TelephonyManager.NETWORK_CLASS_3_G:
+ ratClassName = mContext.getResources().getString(
+ com.android.internal.R.string.config_rat_3g);
+ break;
+ case TelephonyManager.NETWORK_CLASS_4_G:
+ ratClassName = mContext.getResources().getString(
+ com.android.internal.R.string.config_rat_4g);
+ break;
+ default:
+ ratClassName = "";
+ break;
+ }
+ return ratClassName;
+ }
+
//
//
// SIM Card