Merge "[framework] Fixed signal strength issue"
This commit is contained in:
@@ -19,7 +19,6 @@ package android.telephony;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.telephony.Rlog;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
|
||||||
@@ -428,6 +427,15 @@ public class SignalStrength implements Parcelable {
|
|||||||
if (DBG) log("Signal after validate=" + this);
|
if (DBG) log("Signal after validate=" + this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* @param true - Gsm, Lte phones
|
||||||
* false - Cdma phones
|
* false - Cdma phones
|
||||||
@@ -541,30 +549,7 @@ public class SignalStrength implements Parcelable {
|
|||||||
* while 4 represents a very strong signal strength.
|
* while 4 represents a very strong signal strength.
|
||||||
*/
|
*/
|
||||||
public int getLevel() {
|
public int getLevel() {
|
||||||
int level = 0;
|
int level = isGsm ? getGsmRelatedSignalStrength() : getCdmaRelatedSignalStrength();
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (DBG) log("getLevel=" + level);
|
if (DBG) log("getLevel=" + level);
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
@@ -1049,6 +1034,36 @@ public class SignalStrength implements Parcelable {
|
|||||||
+ " " + (isGsm ? "gsm|lte" : "cdma"));
|
+ " " + (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
|
* Set SignalStrength based on intent notifier map
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user