diff options
| author | 2017-10-20 06:23:33 +0000 | |
|---|---|---|
| committer | 2017-10-20 06:23:33 +0000 | |
| commit | f44efafe752f50c5c636af826c74c0ad57ac38a8 (patch) | |
| tree | 27ac47557d97d030b0b8e85a0d81a421ac0d2efd | |
| parent | d612d4e2020ddca9f4e0474dc4638dbec58b3579 (diff) | |
| parent | 00c9323828bc006135153fe5951367263f2c8a47 (diff) | |
Merge "[framework] Fixed signal strength issue" am: 6d98743048 am: c671962c9a am: af9207272a
am: 00c9323828
Change-Id: I0e0dcfe8c5cf366a27d64d460328b99be184fcc5
| -rw-r--r-- | telephony/java/android/telephony/SignalStrength.java | 65 |
1 files changed, 40 insertions, 25 deletions
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index 9e02399338fc..c8b4776522c6 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -19,7 +19,6 @@ package android.telephony; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.telephony.Rlog; import android.util.Log; import android.content.res.Resources; @@ -429,6 +428,15 @@ public class SignalStrength implements Parcelable { } /** + * Fix {@link #isGsm} based on the signal strength data. + * + * @hide + */ + public void fixType() { + isGsm = getCdmaRelatedSignalStrength() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN; + } + + /** * @param true - Gsm, Lte phones * false - Cdma phones * @@ -541,30 +549,7 @@ public class SignalStrength implements Parcelable { * while 4 represents a very strong signal strength. */ public int getLevel() { - int level = 0; - - if (isGsm) { - level = getLteLevel(); - if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - level = getTdScdmaLevel(); - if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - level = getGsmLevel(); - } - } - } else { - int cdmaLevel = getCdmaLevel(); - int evdoLevel = getEvdoLevel(); - if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - /* We don't know evdo, use cdma */ - level = cdmaLevel; - } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - /* We don't know cdma, use evdo */ - level = evdoLevel; - } else { - /* We know both, use the lowest level */ - level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel; - } - } + int level = isGsm ? getGsmRelatedSignalStrength() : getCdmaRelatedSignalStrength(); if (DBG) log("getLevel=" + level); return level; } @@ -1049,6 +1034,36 @@ public class SignalStrength implements Parcelable { + " " + (isGsm ? "gsm|lte" : "cdma")); } + /** Returns the signal strength related to GSM. */ + private int getGsmRelatedSignalStrength() { + int level = getLteLevel(); + if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { + level = getTdScdmaLevel(); + if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { + level = getGsmLevel(); + } + } + return level; + } + + /** Returns the signal strength related to CDMA. */ + private int getCdmaRelatedSignalStrength() { + int level; + int cdmaLevel = getCdmaLevel(); + int evdoLevel = getEvdoLevel(); + if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { + /* We don't know evdo, use cdma */ + level = cdmaLevel; + } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { + /* We don't know cdma, use evdo */ + level = evdoLevel; + } else { + /* We know both, use the lowest level */ + level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel; + } + return level; + } + /** * Set SignalStrength based on intent notifier map * |