From 0e2400fb16f5a52f755d8a2dc2a4688cf0c9a247 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 21 Nov 2014 11:08:55 -0500 Subject: [PATCH] SysUI: QS Wifi get connected wifi rssi from NC Get the connected rssi for WiFi QS panel from NetworkController to ensure it matches the status bar/QS. Bug: 18479823 Change-Id: I82ca0cc9169a91b4e0ae6f07008d48fdb7b820f0 --- .../policy/AccessPointControllerImpl.java | 14 ++++++++++++-- .../statusbar/policy/NetworkControllerImpl.java | 7 ++++++- 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 f9a68d0b21f64..479c982eac931 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 5a97c75e313b3..f3a04b6ab2351 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;