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; final WifiManager mWifiManager;
AsyncChannel mWifiChannel; AsyncChannel mWifiChannel;
boolean mWifiEnabled, mWifiConnected; boolean mWifiEnabled, mWifiConnected;
int mWifiLevel; int mWifiRssi, mWifiLevel;
String mWifiSsid; String mWifiSsid;
int mWifiIconId = 0; int mWifiIconId = 0;
int mWifiActivityIconId = 0; // overlay arrows for wifi direction int mWifiActivityIconId = 0; // overlay arrows for wifi direction
@@ -654,24 +654,29 @@ public class NetworkController extends BroadcastReceiver {
mWifiConnected = networkInfo != null && networkInfo.isConnected(); mWifiConnected = networkInfo != null && networkInfo.isConnected();
// If we just connected, grab the inintial signal strength and ssid // If we just connected, grab the inintial signal strength and ssid
if (mWifiConnected && !wasConnected) { 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) { if (info != null) {
mWifiLevel = WifiManager.calculateSignalLevel(info.getRssi(),
WifiIcons.WIFI_LEVEL_COUNT);
mWifiSsid = huntForSsid(info); mWifiSsid = huntForSsid(info);
} else { } else {
mWifiLevel = 0;
mWifiSsid = null; mWifiSsid = null;
} }
} else if (!mWifiConnected) { } else if (!mWifiConnected) {
mWifiLevel = 0;
mWifiSsid = null; 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)) { } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
if (mWifiConnected) { if (mWifiConnected) {
final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200); mWifiRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
mWifiLevel = WifiManager.calculateSignalLevel(newRssi, WifiIcons.WIFI_LEVEL_COUNT); mWifiLevel = WifiManager.calculateSignalLevel(
mWifiRssi, WifiIcons.WIFI_LEVEL_COUNT);
} }
} }
@@ -1031,6 +1036,8 @@ public class NetworkController extends BroadcastReceiver {
pw.println(mWifiEnabled); pw.println(mWifiEnabled);
pw.print(" mWifiConnected="); pw.print(" mWifiConnected=");
pw.println(mWifiConnected); pw.println(mWifiConnected);
pw.print(" mWifiRssi=");
pw.println(mWifiRssi);
pw.print(" mWifiLevel="); pw.print(" mWifiLevel=");
pw.println(mWifiLevel); pw.println(mWifiLevel);
pw.print(" mWifiSsid="); pw.print(" mWifiSsid=");