Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75b5c1e7 authored by Mengjun Leng's avatar Mengjun Leng
Browse files

Fix empty signal strength bar shows after turning radio on

Either APM off or modem SSR happened, the signal strength
indication might come earlier than RAT changed and radio state
changed to on, which is result in reseting the current valid
signal strength while starting to poll network state under radio
power off, then leading to show signal level 0.

To fix it, query the signal strength mainly if deteted to APM off.

Test: manual
Bug: 173993624

Change-Id: I21e0f7fd1552493b53b03350065459f81aa3ffb8
parent 7342ceb3
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -3283,6 +3283,9 @@ public class ServiceStateTracker extends Handler {
        boolean hasAirplaneModeOnChanged =
                mSS.getState() != ServiceState.STATE_POWER_OFF
                        && mNewSS.getState() == ServiceState.STATE_POWER_OFF;
        boolean hasAirplaneModeOffChanged =
                mSS.getState() == ServiceState.STATE_POWER_OFF
                        && mNewSS.getState() != ServiceState.STATE_POWER_OFF;

        SparseBooleanArray hasDataAttached = new SparseBooleanArray(
                mTransportManager.getAvailableTransports().length);
@@ -3639,6 +3642,14 @@ public class ServiceStateTracker extends Handler {
            }
        }

        // Before starting to poll network state, the signal strength will be
        // reset under radio power off, so here expects to query it again
        // because the signal strength might come earlier RAT and radio state
        // changed.
        if (hasAirplaneModeOffChanged) {
            mCi.getSignalStrength(obtainMessage(EVENT_GET_SIGNAL_STRENGTH));
        }

        if (shouldLogAttachedChange) {
            logAttachChange();
        }
@@ -4983,8 +4994,10 @@ public class ServiceStateTracker extends Handler {

        // This signal is used for both voice and data radio signal so parse
        // all fields

        if ((ar.exception == null) && (ar.result != null)) {
        // Under power off, let's suppress valid signal strength report, which is
        // beneficial to avoid icon flickering.
        if ((ar.exception == null) && (ar.result != null)
                && mSS.getState() != ServiceState.STATE_POWER_OFF) {
            mSignalStrength = (SignalStrength) ar.result;

            PersistableBundle config = getCarrierConfig();