From 5c40d8914d85708779e8df1c49a7bea2750205cb Mon Sep 17 00:00:00 2001 From: "yifan.bai" Date: Fri, 20 Oct 2017 10:25:11 +0800 Subject: [PATCH] Fix getAsuLevel returns "99" in Lte and TdScdma. GetAsuLevel method judges valid signal by getLteLevel/getTdScdmaLevel. However, level is SIGNAL_STRENGTH_NONE_OR_UNKNOWN does not mean not in Lte/TdScdma. For example, if mLteRsrp is in (threshRsrp[1], threshRsrp[0]], getLteLevel would return SIGNAL_STRENGTH_NONE_OR_UNKNOWN. But this only means Lte signal is very weak, and ASU should be (mLteRsrp + 140) not "99" (3GPP 27.007 Sec 8.69). Bug: 72116430 Test: Build Change-Id: If930c3e3d23a9af7b2e51e3560cc28607a6328c0 --- telephony/java/android/telephony/SignalStrength.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index f1f9651963228..fc2ef2782b788 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -492,14 +492,12 @@ public class SignalStrength implements Parcelable { public int getAsuLevel() { int asuLevel = 0; if (mIsGsm) { - if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { - asuLevel = getGsmAsuLevel(); - } else { - asuLevel = getTdScdmaAsuLevel(); - } - } else { + if (mLteRsrp != SignalStrength.INVALID) { asuLevel = getLteAsuLevel(); + } else if (mTdScdmaRscp != SignalStrength.INVALID) { + asuLevel = getTdScdmaAsuLevel(); + } else { + asuLevel = getGsmAsuLevel(); } } else { int cdmaAsuLevel = getCdmaAsuLevel();