Tune wifi RSSI code (see bug 5241139).

Bug: 5241139
Change-Id: I3fef432c39f1b33532e48b643bd9268d3df0f864
This commit is contained in:
Daniel Sandler
2011-10-19 21:02:37 -04:00
parent 1301f092e5
commit 0d6ff01050

View File

@@ -95,7 +95,7 @@ public class NetworkController extends BroadcastReceiver {
final WifiManager mWifiManager;
AsyncChannel mWifiChannel;
boolean mWifiEnabled, mWifiConnected;
int mWifiLevel;
int mWifiRssi, mWifiLevel;
String mWifiSsid;
int mWifiIconId = 0;
int mWifiActivityIconId = 0; // overlay arrows for wifi direction
@@ -654,24 +654,29 @@ public class NetworkController extends BroadcastReceiver {
mWifiConnected = networkInfo != null && networkInfo.isConnected();
// If we just connected, grab the inintial signal strength and ssid
if (mWifiConnected && !wasConnected) {
WifiInfo info = mWifiManager.getConnectionInfo();
// try getting it out of the intent first
WifiInfo info = (WifiInfo) intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
if (info == null) {
info = mWifiManager.getConnectionInfo();
}
if (info != null) {
mWifiLevel = WifiManager.calculateSignalLevel(info.getRssi(),
WifiIcons.WIFI_LEVEL_COUNT);
mWifiSsid = huntForSsid(info);
} else {
mWifiLevel = 0;
mWifiSsid = null;
}
} else if (!mWifiConnected) {
mWifiLevel = 0;
mWifiSsid = null;
}
// Apparently the wifi level is not stable at this point even if we've just connected to
// the network; we need to wait for an RSSI_CHANGED_ACTION for that. So let's just set
// it to 0 for now
mWifiLevel = 0;
mWifiRssi = -200;
} else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
if (mWifiConnected) {
final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
mWifiLevel = WifiManager.calculateSignalLevel(newRssi, WifiIcons.WIFI_LEVEL_COUNT);
mWifiRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
mWifiLevel = WifiManager.calculateSignalLevel(
mWifiRssi, WifiIcons.WIFI_LEVEL_COUNT);
}
}
@@ -1031,6 +1036,8 @@ public class NetworkController extends BroadcastReceiver {
pw.println(mWifiEnabled);
pw.print(" mWifiConnected=");
pw.println(mWifiConnected);
pw.print(" mWifiRssi=");
pw.println(mWifiRssi);
pw.print(" mWifiLevel=");
pw.println(mWifiLevel);
pw.print(" mWifiSsid=");