Loading src/com/android/settings/wifi/AccessPoint.java +55 −10 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.preference.Preference; import android.view.View; import android.widget.ImageView; Loading @@ -32,6 +33,12 @@ import android.widget.ImageView; import java.util.Comparator; class AccessPoint extends Preference { private static final String KEY_DETAILEDSTATE = "key_detailedstate"; private static final String KEY_WIFIINFO = "key_wifiinfo"; private static final String KEY_SCANRESULT = "key_scanresult"; private static final String KEY_CONFIG = "key_config"; private static final int[] STATE_SECURED = {R.attr.state_encrypted}; private static final int[] STATE_NONE = {}; Loading @@ -41,13 +48,15 @@ class AccessPoint extends Preference { static final int SECURITY_PSK = 2; static final int SECURITY_EAP = 3; final String ssid; final String bssid; final int security; final int networkId; String ssid; String bssid; int security; int networkId; boolean wpsAvailable = false; private WifiConfiguration mConfig; /*package*/ScanResult mScanResult; private int mRssi; private WifiInfo mInfo; private DetailedState mState; Loading Loading @@ -78,24 +87,60 @@ class AccessPoint extends Preference { AccessPoint(Context context, WifiConfiguration config) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadConfig(config); } AccessPoint(Context context, ScanResult result) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadResult(result); } AccessPoint(Context context, Bundle savedState) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); mConfig = savedState.getParcelable(KEY_CONFIG); if (mConfig != null) { loadConfig(mConfig); } mScanResult = (ScanResult) savedState.getParcelable(KEY_SCANRESULT); if (mScanResult != null) { loadResult(mScanResult); } mInfo = (WifiInfo) savedState.getParcelable(KEY_WIFIINFO); if (savedState.containsKey(KEY_DETAILEDSTATE)) { mState = DetailedState.valueOf(savedState.getString(KEY_DETAILEDSTATE)); } update(mInfo, mState); } public void saveWifiState(Bundle savedState) { savedState.putParcelable(KEY_CONFIG, mConfig); savedState.putParcelable(KEY_SCANRESULT, mScanResult); savedState.putParcelable(KEY_WIFIINFO, mInfo); if (mState != null) { savedState.putString(KEY_DETAILEDSTATE, mState.toString()); } } private void loadConfig(WifiConfiguration config) { ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID)); bssid = config.BSSID; security = getSecurity(config); networkId = config.networkId; mConfig = config; mRssi = Integer.MAX_VALUE; mConfig = config; } AccessPoint(Context context, ScanResult result) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); private void loadResult(ScanResult result) { ssid = result.SSID; bssid = result.BSSID; security = getSecurity(result); wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS"); wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS"); networkId = -1; mRssi = result.level; mScanResult = result; } @Override Loading src/com/android/settings/wifi/WifiSettings.java +56 −7 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; Loading Loading @@ -89,6 +90,12 @@ public class WifiSettings extends SettingsPreferenceFragment private static final int MENU_ID_FORGET = Menu.FIRST + 4; private static final int MENU_ID_MODIFY = Menu.FIRST + 5; private static final int WIFI_DIALOG_ID = 1; // Instance state keys private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode"; private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state"; private final IntentFilter mFilter; private final BroadcastReceiver mReceiver; private final Scanner mScanner; Loading Loading @@ -119,6 +126,11 @@ public class WifiSettings extends SettingsPreferenceFragment private boolean mEnableNextOnConnection; private boolean mInXlSetupWizard; // Save the dialog details private boolean mDlgEdit; private AccessPoint mDlgAccessPoint; private Bundle mAccessPointSavedState; /* End of "used in Wifi Setup context" */ public WifiSettings() { Loading Loading @@ -165,6 +177,11 @@ public class WifiSettings extends SettingsPreferenceFragment mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); mWifiManager.asyncConnect(getActivity(), new WifiServiceHandler()); if (savedInstanceState != null && savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) { mDlgEdit = savedInstanceState.getBoolean(SAVE_DIALOG_EDIT_MODE); mAccessPointSavedState = savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE); } final Activity activity = getActivity(); final Intent intent = activity.getIntent(); Loading Loading @@ -245,10 +262,6 @@ public class WifiSettings extends SettingsPreferenceFragment } getActivity().unregisterReceiver(mReceiver); mScanner.pause(); if (mDialog != null) { mDialog.dismiss(); mDialog = null; } } @Override Loading @@ -270,6 +283,21 @@ public class WifiSettings extends SettingsPreferenceFragment super.onCreateOptionsMenu(menu, inflater); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // If the dialog is showing, save its state. if (mDialog != null && mDialog.isShowing()) { outState.putBoolean(SAVE_DIALOG_EDIT_MODE, mDlgEdit); if (mDlgAccessPoint != null) { mAccessPointSavedState = new Bundle(); mDlgAccessPoint.saveWifiState(mAccessPointSavedState); outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState); } } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { Loading Loading @@ -380,10 +408,31 @@ public class WifiSettings extends SettingsPreferenceFragment private void showDialog(AccessPoint accessPoint, boolean edit) { if (mDialog != null) { mDialog.dismiss(); removeDialog(WIFI_DIALOG_ID); mDialog = null; } mDialog = new WifiDialog(getActivity(), this, accessPoint, edit); mDialog.show(); // Save the access point and edit mode mDlgAccessPoint = accessPoint; mDlgEdit = edit; showDialog(WIFI_DIALOG_ID); } @Override public Dialog onCreateDialog(int dialogId) { AccessPoint ap = mDlgAccessPoint; // For manual launch if (ap == null) { // For re-launch from saved state if (mAccessPointSavedState != null) { ap = new AccessPoint(getActivity(), mAccessPointSavedState); // For repeated orientation changes mDlgAccessPoint = ap; } } // If it's still null, fine, it's for Add Network mSelectedAccessPoint = ap; mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit); return mDialog; } private boolean requireKeyStore(WifiConfiguration config) { Loading Loading
src/com/android/settings/wifi/AccessPoint.java +55 −10 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.preference.Preference; import android.view.View; import android.widget.ImageView; Loading @@ -32,6 +33,12 @@ import android.widget.ImageView; import java.util.Comparator; class AccessPoint extends Preference { private static final String KEY_DETAILEDSTATE = "key_detailedstate"; private static final String KEY_WIFIINFO = "key_wifiinfo"; private static final String KEY_SCANRESULT = "key_scanresult"; private static final String KEY_CONFIG = "key_config"; private static final int[] STATE_SECURED = {R.attr.state_encrypted}; private static final int[] STATE_NONE = {}; Loading @@ -41,13 +48,15 @@ class AccessPoint extends Preference { static final int SECURITY_PSK = 2; static final int SECURITY_EAP = 3; final String ssid; final String bssid; final int security; final int networkId; String ssid; String bssid; int security; int networkId; boolean wpsAvailable = false; private WifiConfiguration mConfig; /*package*/ScanResult mScanResult; private int mRssi; private WifiInfo mInfo; private DetailedState mState; Loading Loading @@ -78,24 +87,60 @@ class AccessPoint extends Preference { AccessPoint(Context context, WifiConfiguration config) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadConfig(config); } AccessPoint(Context context, ScanResult result) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadResult(result); } AccessPoint(Context context, Bundle savedState) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); mConfig = savedState.getParcelable(KEY_CONFIG); if (mConfig != null) { loadConfig(mConfig); } mScanResult = (ScanResult) savedState.getParcelable(KEY_SCANRESULT); if (mScanResult != null) { loadResult(mScanResult); } mInfo = (WifiInfo) savedState.getParcelable(KEY_WIFIINFO); if (savedState.containsKey(KEY_DETAILEDSTATE)) { mState = DetailedState.valueOf(savedState.getString(KEY_DETAILEDSTATE)); } update(mInfo, mState); } public void saveWifiState(Bundle savedState) { savedState.putParcelable(KEY_CONFIG, mConfig); savedState.putParcelable(KEY_SCANRESULT, mScanResult); savedState.putParcelable(KEY_WIFIINFO, mInfo); if (mState != null) { savedState.putString(KEY_DETAILEDSTATE, mState.toString()); } } private void loadConfig(WifiConfiguration config) { ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID)); bssid = config.BSSID; security = getSecurity(config); networkId = config.networkId; mConfig = config; mRssi = Integer.MAX_VALUE; mConfig = config; } AccessPoint(Context context, ScanResult result) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); private void loadResult(ScanResult result) { ssid = result.SSID; bssid = result.BSSID; security = getSecurity(result); wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS"); wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS"); networkId = -1; mRssi = result.level; mScanResult = result; } @Override Loading
src/com/android/settings/wifi/WifiSettings.java +56 −7 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; Loading Loading @@ -89,6 +90,12 @@ public class WifiSettings extends SettingsPreferenceFragment private static final int MENU_ID_FORGET = Menu.FIRST + 4; private static final int MENU_ID_MODIFY = Menu.FIRST + 5; private static final int WIFI_DIALOG_ID = 1; // Instance state keys private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode"; private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state"; private final IntentFilter mFilter; private final BroadcastReceiver mReceiver; private final Scanner mScanner; Loading Loading @@ -119,6 +126,11 @@ public class WifiSettings extends SettingsPreferenceFragment private boolean mEnableNextOnConnection; private boolean mInXlSetupWizard; // Save the dialog details private boolean mDlgEdit; private AccessPoint mDlgAccessPoint; private Bundle mAccessPointSavedState; /* End of "used in Wifi Setup context" */ public WifiSettings() { Loading Loading @@ -165,6 +177,11 @@ public class WifiSettings extends SettingsPreferenceFragment mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); mWifiManager.asyncConnect(getActivity(), new WifiServiceHandler()); if (savedInstanceState != null && savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) { mDlgEdit = savedInstanceState.getBoolean(SAVE_DIALOG_EDIT_MODE); mAccessPointSavedState = savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE); } final Activity activity = getActivity(); final Intent intent = activity.getIntent(); Loading Loading @@ -245,10 +262,6 @@ public class WifiSettings extends SettingsPreferenceFragment } getActivity().unregisterReceiver(mReceiver); mScanner.pause(); if (mDialog != null) { mDialog.dismiss(); mDialog = null; } } @Override Loading @@ -270,6 +283,21 @@ public class WifiSettings extends SettingsPreferenceFragment super.onCreateOptionsMenu(menu, inflater); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // If the dialog is showing, save its state. if (mDialog != null && mDialog.isShowing()) { outState.putBoolean(SAVE_DIALOG_EDIT_MODE, mDlgEdit); if (mDlgAccessPoint != null) { mAccessPointSavedState = new Bundle(); mDlgAccessPoint.saveWifiState(mAccessPointSavedState); outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState); } } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { Loading Loading @@ -380,10 +408,31 @@ public class WifiSettings extends SettingsPreferenceFragment private void showDialog(AccessPoint accessPoint, boolean edit) { if (mDialog != null) { mDialog.dismiss(); removeDialog(WIFI_DIALOG_ID); mDialog = null; } mDialog = new WifiDialog(getActivity(), this, accessPoint, edit); mDialog.show(); // Save the access point and edit mode mDlgAccessPoint = accessPoint; mDlgEdit = edit; showDialog(WIFI_DIALOG_ID); } @Override public Dialog onCreateDialog(int dialogId) { AccessPoint ap = mDlgAccessPoint; // For manual launch if (ap == null) { // For re-launch from saved state if (mAccessPointSavedState != null) { ap = new AccessPoint(getActivity(), mAccessPointSavedState); // For repeated orientation changes mDlgAccessPoint = ap; } } // If it's still null, fine, it's for Add Network mSelectedAccessPoint = ap; mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit); return mDialog; } private boolean requireKeyStore(WifiConfiguration config) { Loading