OSDN Git Service

SysUI: QS Wifi get connected wifi rssi from NC
authorJason Monk <jmonk@google.com>
Fri, 21 Nov 2014 16:08:55 +0000 (11:08 -0500)
committerJason Monk <jmonk@google.com>
Mon, 1 Dec 2014 17:19:10 +0000 (12:19 -0500)
Get the connected rssi for WiFi QS panel from NetworkController to
ensure it matches the status bar/QS.

Bug: 18479823
Change-Id: I82ca0cc9169a91b4e0ae6f07008d48fdb7b820f0

packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java

index f9a68d0..479c982 100644 (file)
@@ -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")
index 5a97c75..f3a04b6 100644 (file)
@@ -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;