Use WpsConfiguration for new API

Change-Id: I4c1544178bcb29e751db56edb781faf9145cdf86
This commit is contained in:
Irfan Sheriff
2010-12-08 11:28:25 -08:00
parent b8be6da887
commit cdbc80afb2
2 changed files with 55 additions and 25 deletions

View File

@@ -30,6 +30,9 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.IpAssignment; import android.net.wifi.WifiConfiguration.IpAssignment;
import android.net.wifi.WifiConfiguration.AuthAlgorithm; import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WpsConfiguration;
import android.net.wifi.WpsConfiguration.Setup;
import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID; import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID;
import android.net.wifi.WifiConfiguration.ProxySettings; import android.net.wifi.WifiConfiguration.ProxySettings;
import android.net.wifi.WifiInfo; import android.net.wifi.WifiInfo;
@@ -114,6 +117,10 @@ public class WifiConfigController implements TextWatcher,
private TextView mProxyPortView; private TextView mProxyPortView;
private TextView mProxyExclusionListView; private TextView mProxyExclusionListView;
private IpAssignment mIpAssignment;
private ProxySettings mProxySettings;
private LinkProperties mLinkProperties = new LinkProperties();
static boolean requireKeyStore(WifiConfiguration config) { static boolean requireKeyStore(WifiConfiguration config) {
if (config == null) { if (config == null) {
return false; return false;
@@ -331,28 +338,37 @@ public class WifiConfigController implements TextWatcher,
return null; return null;
} }
config.ipAssignment = (mIpSettingsSpinner != null && validateAndFetchIpAndProxyFields();
config.proxySettings = mProxySettings;
config.ipAssignment = mIpAssignment;
config.linkProperties = new LinkProperties(mLinkProperties);
return config;
}
private void validateAndFetchIpAndProxyFields() {
mLinkProperties.clear();
mIpAssignment = (mIpSettingsSpinner != null &&
mIpSettingsSpinner.getSelectedItemPosition() == STATIC_IP) ? mIpSettingsSpinner.getSelectedItemPosition() == STATIC_IP) ?
IpAssignment.STATIC : IpAssignment.DHCP; IpAssignment.STATIC : IpAssignment.DHCP;
if (config.ipAssignment == IpAssignment.STATIC) { if (mIpAssignment == IpAssignment.STATIC) {
//TODO: A better way to do this is to not dismiss the //TODO: A better way to do this is to not dismiss the
//dialog as long as one of the fields is invalid //dialog as long as one of the fields is invalid
LinkProperties linkProperties = new LinkProperties(); int result = validateIpConfigFields(mLinkProperties);
int result = validateIpConfigFields(linkProperties); if (result != 0) {
if (result == 0) { mLinkProperties.clear();
config.linkProperties = linkProperties;
} else {
Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show(); Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show();
config.ipAssignment = IpAssignment.UNASSIGNED; mIpAssignment = IpAssignment.UNASSIGNED;
} }
} }
config.proxySettings = (mProxySettingsSpinner != null && mProxySettings = (mProxySettingsSpinner != null &&
mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ? mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ?
ProxySettings.STATIC : ProxySettings.NONE; ProxySettings.STATIC : ProxySettings.NONE;
if (config.proxySettings == ProxySettings.STATIC) { if (mProxySettings == ProxySettings.STATIC) {
String host = mProxyHostView.getText().toString(); String host = mProxyHostView.getText().toString();
String portStr = mProxyPortView.getText().toString(); String portStr = mProxyPortView.getText().toString();
String exclusionList = mProxyExclusionListView.getText().toString(); String exclusionList = mProxyExclusionListView.getText().toString();
@@ -366,14 +382,12 @@ public class WifiConfigController implements TextWatcher,
} }
if (result == 0) { if (result == 0) {
ProxyProperties proxyProperties= new ProxyProperties(host, port, exclusionList); ProxyProperties proxyProperties= new ProxyProperties(host, port, exclusionList);
config.linkProperties.setHttpProxy(proxyProperties); mLinkProperties.setHttpProxy(proxyProperties);
} else { } else {
Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show(); Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show();
config.proxySettings = ProxySettings.UNASSIGNED; mProxySettings = ProxySettings.UNASSIGNED;
} }
} }
return config;
} }
private int validateIpConfigFields(LinkProperties linkProperties) { private int validateIpConfigFields(LinkProperties linkProperties) {
@@ -428,13 +442,32 @@ public class WifiConfigController implements TextWatcher,
return MANUAL; return MANUAL;
} }
int getWpsPin() { WpsConfiguration getWpsConfig() {
try { WpsConfiguration config = new WpsConfiguration();
String wpsPin = ((TextView) mView.findViewById(R.id.wps_pin)).getText().toString(); switch (mNetworkSetupSpinner.getSelectedItemPosition()) {
return Integer.parseInt(wpsPin); case WPS_PBC:
} catch (NumberFormatException e) { config.setup = Setup.PBC;
return -1; break;
case WPS_PIN_FROM_ACCESS_POINT:
config.setup = Setup.PIN_FROM_ACCESS_POINT;
break;
case WPS_PIN_FROM_DEVICE:
config.setup = Setup.PIN_FROM_DEVICE;
break;
default:
config.setup = Setup.INVALID;
Log.e(TAG, "WPS not selected type");
return config;
} }
config.pin = ((TextView) mView.findViewById(R.id.wps_pin)).getText().toString();
config.BSSID = (mAccessPoint != null) ? mAccessPoint.bssid : null;
validateAndFetchIpAndProxyFields();
config.proxySettings = mProxySettings;
config.ipAssignment = mIpAssignment;
config.linkProperties = new LinkProperties(mLinkProperties);
return config;
} }
private void showSecurityFields() { private void showSecurityFields() {

View File

@@ -559,14 +559,11 @@ public class WifiSettings extends SettingsPreferenceFragment
/* package */ void submit(WifiConfigController configController) { /* package */ void submit(WifiConfigController configController) {
switch(configController.chosenNetworkSetupMethod()) { switch(configController.chosenNetworkSetupMethod()) {
case WifiConfigController.WPS_PBC: case WifiConfigController.WPS_PBC:
mWifiManager.startWpsPbc(mSelectedAccessPoint.bssid);
break;
case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT: case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT:
int apPin = configController.getWpsPin(); mWifiManager.startWps(configController.getWpsConfig());
mWifiManager.startWpsWithPinFromAccessPoint(mSelectedAccessPoint.bssid, apPin);
break; break;
case WifiConfigController.WPS_PIN_FROM_DEVICE: case WifiConfigController.WPS_PIN_FROM_DEVICE:
int pin = mWifiManager.startWpsWithPinFromDevice(mSelectedAccessPoint.bssid); String pin = mWifiManager.startWps(configController.getWpsConfig());
new AlertDialog.Builder(getActivity()) new AlertDialog.Builder(getActivity())
.setTitle(R.string.wifi_wps_pin_method_configuration) .setTitle(R.string.wifi_wps_pin_method_configuration)
.setMessage(getResources().getString(R.string.wifi_wps_pin_output, pin)) .setMessage(getResources().getString(R.string.wifi_wps_pin_output, pin))