OSDN Git Service

UI for wps pin from device
authorIrfan Sheriff <isheriff@google.com>
Thu, 21 Oct 2010 23:45:15 +0000 (16:45 -0700)
committerIrfan Sheriff <isheriff@google.com>
Tue, 26 Oct 2010 16:58:58 +0000 (09:58 -0700)
Bug: 3119043
Bug: 3112178
Change-Id: I573146ed0c834cb88d5f42c25fe0be3ed501a321

res/values/arrays.xml
res/values/strings.xml
src/com/android/settings/wifi/AccessPoint.java
src/com/android/settings/wifi/WifiConfigController.java
src/com/android/settings/wifi/WifiSettings.java

index ee44401..8967ff2 100644 (file)
         <!-- 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. -->
index 839d13c..5e46158 100644 (file)
     <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 -->
     <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]-->
index 054c6ff..c932978 100644 (file)
@@ -119,7 +119,7 @@ class AccessPoint extends Preference {
         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 @@ class AccessPoint extends Preference {
             }
 
             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) {
index 597c5a3..d1700a6 100644 (file)
@@ -92,7 +92,8 @@ public class WifiConfigController implements TextWatcher,
     /* 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 @@ public class WifiConfigController implements TextWatcher,
         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);
index 30c2a3d..d8d0a60 100644 (file)
@@ -23,6 +23,7 @@ import com.android.settings.R;
 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 @@ public class WifiSettings extends SettingsPreferenceFragment
             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();