summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java17
1 files changed, 16 insertions, 1 deletions
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 8ea09e56164d..75231448ccfc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -23,6 +23,8 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.provider.Settings.Global;
+import android.telephony.CellSignalStrength;
+import android.telephony.CellSignalStrengthCdma;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
@@ -50,6 +52,7 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionD
import java.io.PrintWriter;
import java.util.BitSet;
import java.util.Objects;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -481,6 +484,18 @@ public class MobileSignalController extends SignalController<
}
/**
+ * Extracts the CellSignalStrengthCdma from SignalStrength then returns the level
+ */
+ private final int getCdmaLevel() {
+ List<CellSignalStrengthCdma> signalStrengthCdma =
+ mSignalStrength.getCellSignalStrengths(CellSignalStrengthCdma.class);
+ if (!signalStrengthCdma.isEmpty()) {
+ return signalStrengthCdma.get(0).getLevel();
+ }
+ return CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ }
+
+ /**
* Updates the current state based on mServiceState, mSignalStrength, mDataNetType,
* mDataState, and mSimState. It should be called any time one of these is updated.
* This will call listeners if necessary.
@@ -495,7 +510,7 @@ public class MobileSignalController extends SignalController<
&& mSignalStrength != null;
if (mCurrentState.connected) {
if (!mSignalStrength.isGsm() && mConfig.alwaysShowCdmaRssi) {
- mCurrentState.level = mSignalStrength.getCdmaLevel();
+ mCurrentState.level = getCdmaLevel();
} else {
mCurrentState.level = mSignalStrength.getLevel();
}