Skip to content

Commit 0d6ff01

Browse files
committed
Tune wifi RSSI code (see bug 5241139).
Bug: 5241139 Change-Id: I3fef432c39f1b33532e48b643bd9268d3df0f864
1 parent 1301f09 commit 0d6ff01

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public class NetworkController extends BroadcastReceiver {
9595
final WifiManager mWifiManager;
9696
AsyncChannel mWifiChannel;
9797
boolean mWifiEnabled, mWifiConnected;
98-
int mWifiLevel;
98+
int mWifiRssi, mWifiLevel;
9999
String mWifiSsid;
100100
int mWifiIconId = 0;
101101
int mWifiActivityIconId = 0; // overlay arrows for wifi direction
@@ -654,24 +654,29 @@ private void updateWifiState(Intent intent) {
654654
mWifiConnected = networkInfo != null && networkInfo.isConnected();
655655
// If we just connected, grab the inintial signal strength and ssid
656656
if (mWifiConnected && !wasConnected) {
657-
WifiInfo info = mWifiManager.getConnectionInfo();
657+
// try getting it out of the intent first
658+
WifiInfo info = (WifiInfo) intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
659+
if (info == null) {
660+
info = mWifiManager.getConnectionInfo();
661+
}
658662
if (info != null) {
659-
mWifiLevel = WifiManager.calculateSignalLevel(info.getRssi(),
660-
WifiIcons.WIFI_LEVEL_COUNT);
661663
mWifiSsid = huntForSsid(info);
662664
} else {
663-
mWifiLevel = 0;
664665
mWifiSsid = null;
665666
}
666667
} else if (!mWifiConnected) {
667-
mWifiLevel = 0;
668668
mWifiSsid = null;
669669
}
670-
670+
// Apparently the wifi level is not stable at this point even if we've just connected to
671+
// the network; we need to wait for an RSSI_CHANGED_ACTION for that. So let's just set
672+
// it to 0 for now
673+
mWifiLevel = 0;
674+
mWifiRssi = -200;
671675
} else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
672676
if (mWifiConnected) {
673-
final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
674-
mWifiLevel = WifiManager.calculateSignalLevel(newRssi, WifiIcons.WIFI_LEVEL_COUNT);
677+
mWifiRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
678+
mWifiLevel = WifiManager.calculateSignalLevel(
679+
mWifiRssi, WifiIcons.WIFI_LEVEL_COUNT);
675680
}
676681
}
677682

@@ -1031,6 +1036,8 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
10311036
pw.println(mWifiEnabled);
10321037
pw.print(" mWifiConnected=");
10331038
pw.println(mWifiConnected);
1039+
pw.print(" mWifiRssi=");
1040+
pw.println(mWifiRssi);
10341041
pw.print(" mWifiLevel=");
10351042
pw.println(mWifiLevel);
10361043
pw.print(" mWifiSsid=");

0 commit comments

Comments
 (0)