UI for wps pin from device
Bug: 3119043
Bug: 3112178
Change-Id: I573146ed0c834cb88d5f42c25fe0be3ed501a321
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index ee44401..8967ff2 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -349,7 +349,9 @@
<!-- WPS is a new standard that allowes secure connection establishment to a home wireless network using a simplified process. WPS push button based configuration involves pushing a button on the router and the device [CHAR LIMIT=25]-->
<item>WPS push button</item>
<!-- WPS pin method based configuration. This requires entering a pin obtained from the access point [CHAR LIMIT=25] -->
- <item>WPS pin method</item>
+ <item>WPS pin from access point</item>
+ <!-- WPS pin method based configuration. This requires generating a pin from this device [CHAR LIMIT=25] -->
+ <item>WPS pin from this device</item>
</string-array>
<!-- Wi-Fi IP settings. -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 839d13c..5e46158 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -916,6 +916,10 @@
<string name="wifi_network_setup">Network Setup</string>
<!-- Label for the text view for WPS pin input [CHAR LIMIT=50] -->
<string name="wifi_wps_pin">Enter pin from access point</string>
+ <!-- Title for the WPS pin display dialog [CHAR LIMIT=50] -->
+ <string name="wifi_wps_pin_method_configuration">WPS pin method configuration</string>
+ <!-- Text displayed in the WPS pin display dialog [CHAR LIMIT=50] -->
+ <string name="wifi_wps_pin_output">Enter the pin <xliff:g id="wps_pin">%1$s</xliff:g> on the access point</string>
<!-- Label for the SSID of the network -->
<string name="wifi_ssid">Network SSID</string>
<!-- Label for the security of the connection -->
@@ -956,6 +960,8 @@
<string name="wifi_disabled">Disabled</string>
<!-- Summary for the remembered network but currently not in range. -->
<string name="wifi_not_in_range">Not in range</string>
+ <!-- Summary for an open network with WPS being available [CHAR LIMIT=50]-->
+ <string name="wifi_open_with_wps">WPS available</string>
<!-- Summary for the secured network. -->
<string name="wifi_secured">Secured with <xliff:g id="wifi_security">%1$s</xliff:g></string>
<!-- Summary for the secured network with WPS being available [CHAR LIMIT=50]-->
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index 054c6ff..c932978 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -119,7 +119,7 @@
ssid = result.SSID;
bssid = result.BSSID;
security = getSecurity(result);
- wpsAvailable = security != SECURITY_NONE && security != SECURITY_EAP &&
+ wpsAvailable = security != SECURITY_EAP &&
result.capabilities.contains("WPS");
networkId = -1;
mRssi = result.level;
@@ -222,7 +222,11 @@
}
if (security == SECURITY_NONE) {
- setSummary(status);
+ if (wpsAvailable && mConfig == null) {
+ setSummary(context.getString(R.string.wifi_open_with_wps));
+ } else {
+ setSummary(status);
+ }
} else {
String format;
if (wpsAvailable && mConfig == null) {
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 597c5a3..d1700a6 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -92,7 +92,8 @@
/* These values come from "wifi_network_setup" resource array */
public static final int MANUAL = 0;
public static final int WPS_PBC = 1;
- public static final int WPS_PIN = 2;
+ public static final int WPS_PIN_FROM_ACCESS_POINT = 2;
+ public static final int WPS_PIN_FROM_DEVICE = 3;
/* These values come from "wifi_proxy_settings" resource array */
public static final int PROXY_NONE = 0;
@@ -491,14 +492,15 @@
int pos = mNetworkSetupSpinner.getSelectedItemPosition();
/* Show pin text input if needed */
- if (pos == WPS_PIN) {
+ if (pos == WPS_PIN_FROM_ACCESS_POINT) {
mView.findViewById(R.id.wps_fields).setVisibility(View.VISIBLE);
} else {
mView.findViewById(R.id.wps_fields).setVisibility(View.GONE);
}
/* show/hide manual security fields appropriately */
- if ((pos == WPS_PIN) || (pos == WPS_PBC)) {
+ if ((pos == WPS_PIN_FROM_ACCESS_POINT) || (pos == WPS_PIN_FROM_DEVICE)
+ || (pos == WPS_PBC)) {
mView.findViewById(R.id.security_fields).setVisibility(View.GONE);
} else {
mView.findViewById(R.id.security_fields).setVisibility(View.VISIBLE);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 30c2a3d..d8d0a60 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -23,6 +23,7 @@
import com.android.settings.SettingsPreferenceFragment;
import android.app.Activity;
+import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
@@ -642,9 +643,17 @@
case WifiConfigController.WPS_PBC:
mWifiManager.startWpsPbc(mSelectedAccessPoint.bssid);
break;
- case WifiConfigController.WPS_PIN:
+ case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT:
int apPin = configController.getWpsPin();
- mWifiManager.startWpsPin(mSelectedAccessPoint.bssid, apPin);
+ mWifiManager.startWpsWithPinFromAccessPoint(mSelectedAccessPoint.bssid, apPin);
+ break;
+ case WifiConfigController.WPS_PIN_FROM_DEVICE:
+ int pin = mWifiManager.startWpsWithPinFromDevice(mSelectedAccessPoint.bssid);
+ new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.wifi_wps_pin_method_configuration)
+ .setMessage(getResources().getString(R.string.wifi_wps_pin_output, pin))
+ .setPositiveButton(android.R.string.ok, null)
+ .show();
break;
case WifiConfigController.MANUAL:
final WifiConfiguration config = configController.getConfig();