+ private void updateWifiScanState() {
+ networkScanned = true;
+ List<ScanResult> scanResultList = wifiManager.getScanResults();
+ for(int i = 0; i < wifiPresets.length; i++) {
+ boolean networkFound = false;
+ for(ScanResult result : scanResultList) {
+ if(result.SSID != null && result.SSID.equalsIgnoreCase(wifiPresets[i].getSSID())) {
+ networkFound = true;
+ break;
+ }
+ }
+ wifiPresets[i].isInScanResult = networkFound;
+ }
+ updateWifiConnectButton();
+ }
+
+ private void updateWifiConnectButton() {
+ if(selectedNetworkIndex >= wifiPresets.length)
+ return;
+ WifiNetworkSettings preset = wifiPresets[selectedNetworkIndex];
+
+ boolean buttonEnabled = false;
+ int buttonTextId = 0;
+ NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ WifiConfigurationManager.WifiConnectionStatus status = wifiConfigManager.getWifiState(preset);
+ String ssid = trimWifiSSID(wifiInfo != null ? wifiInfo.getSSID() : null);
+
+ Log.i("Wifi", ssid + "|" + preset.getSSID());
+
+ if(!wifiManager.isWifiEnabled()) {
+ buttonTextId = R.string.wifisettings_connect_button_disabled;
+ } else if(networkInfo.isConnectedOrConnecting() && ssid != null && ssid.equalsIgnoreCase(preset.getSSID()) && status == WifiConfigurationManager.WifiConnectionStatus.WIFISTATE_NULL) {
+ buttonTextId = R.string.wifisettings_connect_button_ready;
+ } else if(!networkScanned) {
+ buttonTextId = R.string.wifisettings_connect_button_scan;
+ } else if(!preset.isInScanResult) {
+ buttonTextId = R.string.wifisettings_connect_button_notfound;
+ buttonEnabled = true;
+ } else {
+ buttonTextId = 0;
+ if(status != WifiConfigurationManager.WifiConnectionStatus.WIFISTATE_NULL) {
+ switch (status) {
+ case WIFISTATE_CONNECTING:
+ buttonTextId = R.string.wifisettings_connect_button_connecting;
+ break;
+ case WIFISTATE_AUTHENTICATING:
+ buttonTextId = R.string.wifisettings_connect_button_authenticating;
+ break;
+ case WIFISTATE_CONNECTED:
+ buttonTextId = R.string.wifisettings_connect_button_ready;
+ break;
+ case WIFISTATE_FAILED:
+ buttonTextId = R.string.wifisettings_connect_button_failed;
+ buttonEnabled = true;
+ break;
+ }
+ }
+ if(wifiConfigManager.isLocked(preset) && buttonTextId == 0) {
+ buttonTextId = R.string.wifisettings_connect_button_connecting;
+ }
+
+ if(buttonTextId == 0) {
+ buttonEnabled = true;
+ buttonTextId = R.string.wifisettings_connect_button;
+ }
+ }
+
+ Button connectBtn = (Button) view.findViewById(R.id.wifiConnectBtn);
+ connectBtn.setEnabled(buttonEnabled);
+ connectBtn.setText(buttonTextId);
+ }