X-Git-Url: http://git.pk910.de/?p=DHBWCampusApp.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2Ffragments%2FWifiSettings.java;h=ae5d8e0a1aa6e85bf3ddf30d9d451f305ebd1ec5;hp=615d7badad4acf4424709fbe9d7cf748436f6ba4;hb=8e51b33658d14e953b211fbfbc6255d72ba48fbc;hpb=5b19adec4e1c709d0166b6a10319ba807d1e4b8b diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java index 615d7ba..ae5d8e0 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java @@ -78,47 +78,13 @@ public class WifiSettings extends CampusAppFragment { public void onReceive(Context arg0, Intent intent) { String action = intent.getAction(); if(action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)){ - WifiInfo myWifiInfo = wifiManager.getConnectionInfo(); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + SupplicantState wifiState = ((SupplicantState) intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); - WifiNetworkSettings settings = null; - for(int i = 0; i < wifiPresets.length; i++) { - if(wifiPresets[i].getSSID().equalsIgnoreCase(myWifiInfo.getSSID())) { - settings = wifiPresets[i]; - break; - } - } - - if(settings != null) { - SupplicantState supl_state = ((SupplicantState) intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); - switch (supl_state) { - case ASSOCIATING: - settings.isAssociating = true; - settings.isAssociated = false; - settings.isAuthenticated = false; - settings.isDisconnected = false; - break; - case ASSOCIATED: - settings.isAssociated = true; - break; - case COMPLETED: - settings.isAuthenticated = true; - break; - case DISCONNECTED: - settings.isAssociated = false; - settings.isAssociating = false; - settings.isDisconnected = true; - break; - default: - break; - } - updateWifiState(); - } + wifiConfigManager.updateWifiState(wifiInfo, wifiState); } - NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); - if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { - updateWifiState(); - } + updateWifiState(); } }; private BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() { @@ -139,7 +105,17 @@ public class WifiSettings extends CampusAppFragment { wifiManager = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE); connectivityManager = (ConnectivityManager) AppContext.getMainActivity().getSystemService(Activity.CONNECTIVITY_SERVICE); - wifiConfigManager = new WifiConfigurationManager(wifiManager); + wifiConfigManager = new WifiConfigurationManager(wifiManager, this); + } + + public String trimWifiSSID(String ssid) { + if(ssid == null) + return null; + if(ssid.matches("^\"(.*)\"$")) { + ssid = ssid.substring(1, ssid.length()-1); + } + + return ssid; } private void updateSelectedNetworkInformation() { @@ -238,10 +214,10 @@ public class WifiSettings extends CampusAppFragment { updateWifiConnectButton(); } - private void updateWifiState() { + public void updateWifiState() { NetworkInfo myNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); WifiInfo myWifiInfo = wifiManager.getConnectionInfo(); - String ssid = (myWifiInfo != null ? myWifiInfo.getSSID() : null); + String ssid = trimWifiSSID(myWifiInfo != null ? myWifiInfo.getSSID() : null); if(ssid == null) return; @@ -255,54 +231,17 @@ public class WifiSettings extends CampusAppFragment { if(settings == null) return; - if(settings.isTryConnecting) { - boolean success = false; - if(settings.isDisconnected) { - settings.failedAuthentication = true; - settings.isTryConnecting = false; - } else if(settings.isAssociated) { - settings.isTryConnecting = false; - success = true; - } - if(!settings.isTryConnecting) { - // success - // TODO: continue - } - } - - Resources resources = AppContext.getMainActivity().getResources(); String status; if(myNetworkInfo.isConnectedOrConnecting()) { int statusId = (myNetworkInfo.isConnected() ? R.string.wifisettings_status_connected : R.string.wifisettings_status_connecting); - - - ssid = ssid.replace("\"", ""); status = String.format(resources.getString(statusId), ssid); - - - - - //if(networkConnecting && wifiPresets[connectingNetworkIndex].getSSID().equalsIgnoreCase(ssid)) { - - /* - - wifiConfigManager.finalizeConnection(wifiPresets[connectingNetworkIndex], myNetworkInfo, myWifiInfo, new WifiConfigurationManager.WifiConfigurationComplete() { - @Override - public void onWifiConfigurationComplete(WifiNetworkSettings settings, String response) { - networkConnecting = false; - connectingNetworkIndex = 0; - updateWifiConnectButton(); - } - }); - */ - //} } else { status = resources.getString(R.string.wifisettings_status_disconnected); } - TextView statusTextView = (TextView)view.findViewById(R.id.wifiStatusText); statusTextView.setText(status); + updateWifiConnectButton(); } @@ -331,21 +270,47 @@ public class WifiSettings extends CampusAppFragment { 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() && wifiInfo.getSSID() != null && wifiInfo.getSSID().equalsIgnoreCase(preset.getSSID())) { + } else if(networkInfo.isConnectedOrConnecting() && ssid != null && ssid.equalsIgnoreCase(preset.getSSID()) && status == WifiConfigurationManager.WifiConnectionStatus.WIFISTATE_NULL) { buttonTextId = R.string.wifisettings_connect_button_ready; - } else if(preset.isTryConnecting) { - buttonTextId = R.string.wifisettings_connect_button_connecting; } else if(!networkScanned) { buttonTextId = R.string.wifisettings_connect_button_scan; } else if(!preset.isInScanResult) { buttonTextId = R.string.wifisettings_connect_button_notfound; buttonEnabled = true; } else { - buttonEnabled = true; - buttonTextId = R.string.wifisettings_connect_button; + 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); @@ -406,7 +371,6 @@ public class WifiSettings extends CampusAppFragment { if (username.length() > 0 && password.length() > 0) { if(settings != null) { - settings.isTryConnecting = true; settings.setAuthData(username, password); wifiConfigManager.connect(settings);