summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/settings/wifi/AccessPoint.java57
-rw-r--r--src/com/android/settings/wifi/AdvancedWifiSettings.java21
-rw-r--r--src/com/android/settings/wifi/WifiConfigController.java174
-rw-r--r--src/com/android/settings/wifi/WifiSettings.java11
4 files changed, 150 insertions, 113 deletions
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index 9db1163..0fe5f81 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -39,6 +39,34 @@ import java.util.Map;
class AccessPoint extends Preference {
static final String TAG = "Settings.AccessPoint";
+ /**
+ * Lower bound on the 2.4 GHz (802.11b/g/n) WLAN channels
+ */
+ public static final int LOWER_FREQ_24GHZ = 2400;
+
+ /**
+ * Upper bound on the 2.4 GHz (802.11b/g/n) WLAN channels
+ */
+ public static final int HIGHER_FREQ_24GHZ = 2500;
+
+ /**
+ * Lower bound on the 5.0 GHz (802.11a/h/j/n/ac) WLAN channels
+ */
+ public static final int LOWER_FREQ_5GHZ = 4900;
+
+ /**
+ * Upper bound on the 5.0 GHz (802.11a/h/j/n/ac) WLAN channels
+ */
+ public static final int HIGHER_FREQ_5GHZ = 5900;
+
+ /** Experimental: we should be able to show the user the list of BSSIDs and bands
+ * for that SSID.
+ * For now this data is used only with Verbose Logging so as to show the band and number
+ * of BSSIDs on which that network is seen.
+ */
+ public LruCache<String, ScanResult> mScanResultCache;
+
+
private static final String KEY_DETAILEDSTATE = "key_detailedstate";
private static final String KEY_WIFIINFO = "key_wifiinfo";
private static final String KEY_SCANRESULT = "key_scanresult";
@@ -83,19 +111,8 @@ class AccessPoint extends Preference {
private static final int VISIBILITY_MAX_AGE_IN_MILLI = 1000000;
private static final int VISIBILITY_OUTDATED_AGE_IN_MILLI = 20000;
- private static final int LOWER_FREQ_24GHZ = 2400;
- private static final int HIGHER_FREQ_24GHZ = 2500;
- private static final int LOWER_FREQ_5GHZ = 4900;
- private static final int HIGHER_FREQ_5GHZ = 5900;
private static final int SECOND_TO_MILLI = 1000;
- /** Experiemental: we should be able to show the user the list of BSSIDs and bands
- * for that SSID.
- * For now this data is used only with Verbose Logging so as to show the band and number
- * of BSSIDs on which that network is seen.
- */
- public LruCache<String, ScanResult> scanResultCache;
-
static int getSecurity(WifiConfiguration config) {
if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
return SECURITY_PSK;
@@ -302,10 +319,10 @@ class AccessPoint extends Preference {
mSeen = result.seen;
}
if (WifiSettings.mVerboseLogging > 0) {
- if (scanResultCache == null) {
- scanResultCache = new LruCache<String, ScanResult>(32);
+ if (mScanResultCache == null) {
+ mScanResultCache = new LruCache<String, ScanResult>(32);
}
- scanResultCache.put(result.BSSID, result);
+ mScanResultCache.put(result.BSSID, result);
}
if (ssid.equals(result.SSID) && security == getSecurity(result)) {
@@ -408,12 +425,12 @@ class AccessPoint extends Preference {
visibility.append(String.format("rx=%.1f", mInfo.rxSuccessRate));
}
- if (scanResultCache != null) {
+ if (mScanResultCache != null) {
int rssi5 = WifiConfiguration.INVALID_RSSI;
int rssi24 = WifiConfiguration.INVALID_RSSI;
int num5 = 0;
int num24 = 0;
- Map<String, ScanResult> list = scanResultCache.snapshot();
+ Map<String, ScanResult> list = mScanResultCache.snapshot();
for (ScanResult result : list.values()) {
if (result.seen == 0)
continue;
@@ -517,16 +534,8 @@ class AccessPoint extends Preference {
} else {
securityStrFormat = context.getString(R.string.wifi_secured_second_item);
}
- summary.append(String.format(securityStrFormat, getSecurityString(true)));
}
- if (mConfig == null && wpsAvailable) { // Only list WPS available for unsaved networks
- if (summary.length() == 0) {
- summary.append(context.getString(R.string.wifi_wps_available_first_item));
- } else {
- summary.append(context.getString(R.string.wifi_wps_available_second_item));
- }
- }
}
if (WifiSettings.mVerboseLogging > 0) {
//add RSSI/band information for this config, what was seen up to 6 seconds ago
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index 4accb04..aa4c185 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -22,10 +22,12 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.net.wifi.WpsInfo;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.provider.Settings.Global;
@@ -50,6 +52,8 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
private static final String KEY_POOR_NETWORK_DETECTION = "wifi_poor_network_detection";
private static final String KEY_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_available";
private static final String KEY_INSTALL_CREDENTIALS = "install_credentials";
+ private static final String KEY_WIFI_DIRECT = "wifi_direct";
+ private static final String KEY_WPS_PUSH = "wps_push_button";
private static final String KEY_SUSPEND_OPTIMIZATIONS = "suspend_optimizations";
private WifiManager mWifiManager;
@@ -121,13 +125,28 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
scanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
- Intent intent=new Intent(Credentials.INSTALL_AS_USER_ACTION);
+ Intent intent = new Intent(Credentials.INSTALL_AS_USER_ACTION);
intent.setClassName("com.android.certinstaller",
"com.android.certinstaller.CertInstallerMain");
intent.putExtra(Credentials.EXTRA_INSTALL_AS_UID, android.os.Process.WIFI_UID);
Preference pref = findPreference(KEY_INSTALL_CREDENTIALS);
pref.setIntent(intent);
+ Intent wifiDirectIntent = new Intent(getActivity(),
+ com.android.settings.Settings.WifiP2pSettingsActivity.class);
+ Preference wifiDirectPref = findPreference(KEY_WIFI_DIRECT);
+ wifiDirectPref.setIntent(wifiDirectIntent);
+
+ // WpsDialog: Create the dialog like WifiSettings does.
+ Preference wpsPushPref = findPreference(KEY_WPS_PUSH);
+ wpsPushPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ public boolean onPreferenceClick(Preference arg0) {
+ WpsDialog wpsDialog = new WpsDialog(getActivity(), WpsInfo.PBC);
+ wpsDialog.show();
+ return true;
+ }
+ });
+
CheckBoxPreference suspendOptimizations =
(CheckBoxPreference) findPreference(KEY_SUSPEND_OPTIMIZATIONS);
suspendOptimizations.setChecked(Global.getInt(getContentResolver(),
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 497132c..96bb5d6 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -69,36 +69,12 @@ import java.util.Iterator;
*/
public class WifiConfigController implements TextWatcher,
AdapterView.OnItemSelectedListener, OnCheckedChangeListener {
+ private static final String TAG = "WifiConfigController";
+
private final WifiConfigUiBase mConfigUi;
private final View mView;
private final AccessPoint mAccessPoint;
- private boolean mEdit;
-
- private TextView mSsidView;
-
- // e.g. AccessPoint.SECURITY_NONE
- private int mAccessPointSecurity;
- private TextView mPasswordView;
-
- private String unspecifiedCert = "unspecified";
- private static final int unspecifiedCertIndex = 0;
-
- /* Phase2 methods supported by PEAP are limited */
- private final ArrayAdapter<String> PHASE2_PEAP_ADAPTER;
- /* Full list of phase2 methods */
- private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
-
- private Spinner mSecuritySpinner;
- private Spinner mEapMethodSpinner;
- private Spinner mEapCaCertSpinner;
- private Spinner mPhase2Spinner;
- // Associated with mPhase2Spinner, one of PHASE2_FULL_ADAPTER or PHASE2_PEAP_ADAPTER
- private ArrayAdapter<String> mPhase2Adapter;
- private Spinner mEapUserCertSpinner;
- private TextView mEapIdentityView;
- private TextView mEapAnonymousView;
-
/* This value comes from "wifi_ip_settings" resource array */
private static final int DHCP = 0;
private static final int STATIC_IP = 1;
@@ -119,7 +95,32 @@ public class WifiConfigController implements TextWatcher,
public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 1;
public static final int WIFI_PEAP_PHASE2_GTC = 2;
- private static final String TAG = "WifiConfigController";
+ /* Phase2 methods supported by PEAP are limited */
+ private final ArrayAdapter<String> PHASE2_PEAP_ADAPTER;
+ /* Full list of phase2 methods */
+ private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
+
+ // True when this instance is used in SetupWizard XL context.
+ private final boolean mInXlSetupWizard;
+
+ private final Handler mTextViewChangedHandler;
+
+ // e.g. AccessPoint.SECURITY_NONE
+ private int mAccessPointSecurity;
+ private TextView mPasswordView;
+
+ private String unspecifiedCert = "unspecified";
+ private static final int unspecifiedCertIndex = 0;
+
+ private Spinner mSecuritySpinner;
+ private Spinner mEapMethodSpinner;
+ private Spinner mEapCaCertSpinner;
+ private Spinner mPhase2Spinner;
+ // Associated with mPhase2Spinner, one of PHASE2_FULL_ADAPTER or PHASE2_PEAP_ADAPTER
+ private ArrayAdapter<String> mPhase2Adapter;
+ private Spinner mEapUserCertSpinner;
+ private TextView mEapIdentityView;
+ private TextView mEapAnonymousView;
private Spinner mIpSettingsSpinner;
private TextView mIpAddressView;
@@ -138,10 +139,11 @@ public class WifiConfigController implements TextWatcher,
private ProxySettings mProxySettings = ProxySettings.UNASSIGNED;
private LinkProperties mLinkProperties = new LinkProperties();
- // True when this instance is used in SetupWizard XL context.
- private final boolean mInXlSetupWizard;
+ private String[] mLevels;
+ private boolean mEdit;
+ private TextView mSsidView;
- private final Handler mTextViewChangedHandler;
+ private Context mContext;
public WifiConfigController(
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
@@ -155,20 +157,21 @@ public class WifiConfigController implements TextWatcher,
mEdit = edit;
mTextViewChangedHandler = new Handler();
- final Context context = mConfigUi.getContext();
- final Resources resources = context.getResources();
+ mContext = mConfigUi.getContext();
+ final Resources res = mContext.getResources();
+ mLevels = res.getStringArray(R.array.wifi_signal);
PHASE2_PEAP_ADAPTER = new ArrayAdapter<String>(
- context, android.R.layout.simple_spinner_item,
- context.getResources().getStringArray(R.array.wifi_peap_phase2_entries));
+ mContext, android.R.layout.simple_spinner_item,
+ res.getStringArray(R.array.wifi_peap_phase2_entries));
PHASE2_PEAP_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
PHASE2_FULL_ADAPTER = new ArrayAdapter<String>(
- context, android.R.layout.simple_spinner_item,
- context.getResources().getStringArray(R.array.wifi_phase2_entries));
+ mContext, android.R.layout.simple_spinner_item,
+ res.getStringArray(R.array.wifi_phase2_entries));
PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- unspecifiedCert = context.getString(R.string.wifi_unspecified);
+ unspecifiedCert = mContext.getString(R.string.wifi_unspecified);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -186,9 +189,9 @@ public class WifiConfigController implements TextWatcher,
mView.findViewById(R.id.type_security).setVisibility(View.VISIBLE);
// We want custom layout. The content must be same as the other cases.
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.wifi_setup_custom_list_item_1, android.R.id.text1,
- context.getResources().getStringArray(R.array.wifi_security_no_eap));
+ res.getStringArray(R.array.wifi_security_no_eap));
mSecuritySpinner.setAdapter(adapter);
} else {
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
@@ -201,46 +204,12 @@ public class WifiConfigController implements TextWatcher,
.setOnCheckedChangeListener(this);
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
} else {
mConfigUi.setTitle(mAccessPoint.ssid);
ViewGroup group = (ViewGroup) mView.findViewById(R.id.info);
- DetailedState state = mAccessPoint.getState();
- if (state != null) {
- addRow(group, R.string.wifi_status, Summary.get(mConfigUi.getContext(), state));
- }
-
- int level = mAccessPoint.getLevel();
- if (level != -1) {
- String[] signal = resources.getStringArray(R.array.wifi_signal);
- addRow(group, R.string.wifi_signal, signal[level]);
- }
-
- WifiInfo info = mAccessPoint.getInfo();
- if (info != null && info.getLinkSpeed() != -1) {
- addRow(group, R.string.wifi_speed, info.getLinkSpeed() + WifiInfo.LINK_SPEED_UNITS);
- }
- if (info != null && info.getFrequency() != -1) {
- // Since the frequency is defined on MHz, we need to simplify it
- // to just 2.4GHz (regardless of the locale) or 5GHz.
- int frequency = info.getFrequency();
- String band = null;
- if (frequency >= 2400 && frequency < 2500) {
- band = "2.4GHz";
- } else if (frequency >= 5000 && frequency < 6000) {
- band = "5GHz";
- } else {
- Log.e(TAG, "Unexpected frequency " + frequency);
- }
- if (band != null) {
- addRow(group, R.string.wifi_frequency, band);
- }
- }
-
- addRow(group, R.string.wifi_security, mAccessPoint.getSecurityString(false));
-
boolean showAdvancedFields = false;
if (mAccessPoint.networkId != INVALID_NETWORK_ID) {
WifiConfiguration config = mAccessPoint.getConfig();
@@ -281,21 +250,62 @@ public class WifiConfigController implements TextWatcher,
}
if (mEdit) {
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
} else {
- if (state == null && level != -1) {
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_connect));
+ final DetailedState state = mAccessPoint.getState();
+ final String signalLevel = getSignalString();
+
+ if (state == null && signalLevel != null) {
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_connect));
} else {
+ if (state != null) {
+ addRow(group, R.string.wifi_status, Summary.get(mConfigUi.getContext(),
+ state));
+ }
+
+ if (signalLevel != null) {
+ addRow(group, R.string.wifi_signal, signalLevel);
+ }
+
+ WifiInfo info = mAccessPoint.getInfo();
+ if (info != null && info.getLinkSpeed() != -1) {
+ addRow(group, R.string.wifi_speed, info.getLinkSpeed()
+ + WifiInfo.LINK_SPEED_UNITS);
+ }
+
+ if (info != null && info.getFrequency() != -1) {
+ final int frequency = info.getFrequency();
+ String band = null;
+
+ if (frequency >= AccessPoint.LOWER_FREQ_24GHZ
+ && frequency < AccessPoint.HIGHER_FREQ_24GHZ) {
+ band = res.getString(R.string.wifi_band_24ghz);
+ } else if (frequency >= AccessPoint.LOWER_FREQ_5GHZ
+ && frequency < AccessPoint.HIGHER_FREQ_5GHZ) {
+ band = res.getString(R.string.wifi_band_5ghz);
+ } else {
+ Log.e(TAG, "Unexpected frequency " + frequency);
+ }
+ if (band != null) {
+ addRow(group, R.string.wifi_frequency, band);
+ }
+ }
+
+ addRow(group, R.string.wifi_security, mAccessPoint.getSecurityString(false));
mView.findViewById(R.id.ip_fields).setVisibility(View.GONE);
}
if (mAccessPoint.networkId != INVALID_NETWORK_ID) {
- mConfigUi.setForgetButton(context.getString(R.string.wifi_forget));
+ mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));
}
}
}
- mConfigUi.setCancelButton(context.getString(R.string.wifi_cancel));
+ if (mEdit || (mAccessPoint.getState() == null && mAccessPoint.getLevel() != -1)){
+ mConfigUi.setCancelButton(res.getString(R.string.wifi_cancel));
+ }else{
+ mConfigUi.setCancelButton(res.getString(R.string.wifi_display_options_done));
+ }
if (mConfigUi.getSubmitButton() != null) {
enableSubmitIfAppropriate();
}
@@ -308,6 +318,12 @@ public class WifiConfigController implements TextWatcher,
group.addView(row);
}
+ private String getSignalString(){
+ final int level = mAccessPoint.getLevel();
+
+ return (level > -1 && level < mLevels.length) ? mLevels[level] : null;
+ }
+
/* show submit button if password, ip and proxy settings are valid */
void enableSubmitIfAppropriate() {
Button submit = mConfigUi.getSubmitButton();
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index c832252..cc63f77 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -317,10 +317,6 @@ public class WifiSettings extends RestrictedSettingsFragment
final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
TypedArray ta = getActivity().getTheme().obtainStyledAttributes(
new int[] {R.attr.ic_menu_add, R.attr.ic_wps});
- menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
- .setIcon(ta.getDrawable(1))
- .setEnabled(wifiIsEnabled)
- .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network)
.setIcon(ta.getDrawable(0))
.setEnabled(wifiIsEnabled)
@@ -332,11 +328,6 @@ public class WifiSettings extends RestrictedSettingsFragment
menu.add(Menu.NONE, MENU_ID_WPS_PIN, 0, R.string.wifi_menu_wps_pin)
.setEnabled(wifiIsEnabled)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
- if (mP2pSupported) {
- menu.add(Menu.NONE, MENU_ID_P2P, 0, R.string.wifi_menu_p2p)
- .setEnabled(wifiIsEnabled)
- .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
- }
menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
//.setIcon(android.R.drawable.ic_menu_manage)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
@@ -579,6 +570,8 @@ public class WifiSettings extends RestrictedSettingsFragment
private void setOffMessage() {
if (mEmptyView != null) {
+ mEmptyView.setCompoundDrawablesWithIntrinsicBounds(0,
+ R.drawable.ic_wifi_emptystate, 0, 0);
mEmptyView.setText(R.string.wifi_empty_list_wifi_off);
if (android.provider.Settings.Global.getInt(getActivity().getContentResolver(),
android.provider.Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1) {