diff options
2 files changed, 18 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java index f9a68d0b21f6..479c982eac93 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java @@ -67,6 +67,7 @@ public class AccessPointControllerImpl implements NetworkController.AccessPointC private final UserManager mUserManager; private final Receiver mReceiver = new Receiver(); + private NetworkControllerImpl mNetworkController; private boolean mScanning; private int mCurrentUser; @@ -77,6 +78,10 @@ public class AccessPointControllerImpl implements NetworkController.AccessPointC mCurrentUser = ActivityManager.getCurrentUser(); } + void setNetworkController(NetworkControllerImpl networkController) { + mNetworkController = networkController; + } + public boolean canConfigWifi() { return !mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, new UserHandle(mCurrentUser)); @@ -181,7 +186,6 @@ public class AccessPointControllerImpl implements NetworkController.AccessPointC ap.isConfigured = config != null; ap.networkId = config != null ? config.networkId : AccessPoint.NO_NETWORK; ap.ssid = ssid; - ap.iconId = ICONS[level]; // Connected if either: // -The network ID in the active WifiInfo matches this network's ID. // -The network is ephemeral (no configuration) but the SSID matches. @@ -189,7 +193,13 @@ public class AccessPointControllerImpl implements NetworkController.AccessPointC && ap.networkId == connectedNetworkId) || (ap.networkId == WifiConfiguration.INVALID_NETWORK_ID && wifiInfo != null && ap.ssid.equals(trimDoubleQuotes(wifiInfo.getSSID()))); - ap.level = level; + if (ap.isConnected && mNetworkController != null) { + // Ensure we have the connected network's RSSI. + ap.level = mNetworkController.getConnectedWifiLevel(); + } else { + ap.level = level; + } + ap.iconId = ICONS[ap.level]; // Based on Settings AccessPoint#getSecurity, keep up to date // with better methods of determining no security or not. ap.hasSecurity = scanResult.capabilities.contains("WEP") diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 5a97c75e313b..f3a04b6ab235 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -82,7 +82,7 @@ public class NetworkControllerImpl extends BroadcastReceiver final WifiSignalController mWifiSignalController; @VisibleForTesting final MobileSignalController mMobileSignalController; - private final AccessPointController mAccessPoints; + private final AccessPointControllerImpl mAccessPoints; private final MobileDataControllerImpl mMobileDataController; // bluetooth @@ -154,6 +154,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it updateAirplaneMode(true); + mAccessPoints.setNetworkController(this); } private void registerListeners() { @@ -178,6 +179,10 @@ public class NetworkControllerImpl extends BroadcastReceiver mContext.unregisterReceiver(this); } + public int getConnectedWifiLevel() { + return mWifiSignalController.getState().level; + } + @Override public AccessPointController getAccessPointController() { return mAccessPoints; |