Cherry-pick: Added WifiManager autojoin and WifiScannerTest case.
original l-dev CL: https://partner-android-review.googlesource.com/#/c/186796/
Change-Id: I5a54782bf49228cf21cb7f15efc2048cc7142539
diff --git a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
index 11f3137..f168903 100755
--- a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
@@ -13,6 +13,7 @@
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiManager.WifiLock;
import android.net.wifi.WpsInfo;
@@ -236,30 +237,28 @@
}
}
+ private void applyingkeyMgmt(WifiConfiguration config, ScanResult result){
+ if (result.capabilities.contains("WEP")) {
+ config.allowedKeyManagement.set(KeyMgmt.NONE);
+ config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
+ config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
+ } else if (result.capabilities.contains("PSK")) {
+ config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
+ } else if (result.capabilities.contains("EAP")) {
+ // this is probably wrong, as we don't have a way to enter the enterprise config
+ config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
+ config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
+ } else {
+ config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+ }
+ }
+
private WifiConfiguration wifiConfigurationFromScanResult(ScanResult result) {
if (result == null)
return null;
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + result.SSID + "\"";
- if (result.capabilities.contains("WEP")) {
- config.allowedKeyManagement.set(KeyMgmt.NONE);
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); // ?
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
- }
- if (result.capabilities.contains("WPA2-PSK")) {
- config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
- }
- if (result.capabilities.contains("WPA-PSK")) {
- config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
- }
- if (result.capabilities.contains("EAP")) {
- // this is probably wrong, as we don't have a way to enter the enterprise config
- config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
- config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
- }
- if (result.capabilities.length() == 5 && result.capabilities.contains("ESS")) {
- config.allowedKeyManagement.set(KeyMgmt.NONE);
- }
+ applyingkeyMgmt(config, result);
config.BSSID = result.BSSID;
config.scanResultCache = new HashMap<String, ScanResult>();
if (config.scanResultCache == null)
@@ -337,6 +336,16 @@
return mWifi.getWifiState() == WifiManager.WIFI_STATE_ENABLED;
}
+ private WifiConfiguration genWifiConfig(String SSID, String pwd) {
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.SSID = "\"" + SSID + "\"";
+ if (pwd.length() == 0)
+ wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+ else
+ wifiConfig.preSharedKey = "\"" + pwd + "\"";
+ return wifiConfig;
+ }
+
/**
* Connects to a WPA protected wifi network
*
@@ -348,20 +357,14 @@
@Rpc(description = "Connects a wifi network by ssid",
returns = "True if the operation succeeded.")
public Boolean wifiConnect(
- @RpcParameter(name = "wifiSSID") String wifiSSID,
- @RpcParameter(name = "wifiPassword") @RpcOptional @RpcDefault(value = "") String wifiPassword)
+ @RpcParameter(name = "SSID") String SSID,
+ @RpcParameter(name = "Password") @RpcOptional @RpcDefault(value = "") String Password)
throws ConnectException {
- WifiConfiguration wifiConfig = new WifiConfiguration();
- wifiConfig.SSID = "\"" + wifiSSID + "\"";
- if (wifiPassword.length() == 0)
- wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- else
- wifiConfig.preSharedKey = "\"" + wifiPassword + "\"";
-
+ WifiConfiguration wifiConfig = genWifiConfig(SSID, Password);
mWifi.addNetwork(wifiConfig);
Boolean status = false;
for (WifiConfiguration conf : mWifi.getConfiguredNetworks()) {
- if (conf.SSID != null && conf.SSID.equals("\"" + wifiSSID + "\"")) {
+ if (conf.SSID != null && conf.SSID.equals("\"" + SSID + "\"")) {
mWifi.disconnect();
mWifi.enableNetwork(conf.networkId, true);
status = mWifi.reconnect();
@@ -450,14 +453,9 @@
* @param wifiPassword password for the wifi network
*/
@Rpc(description = "Connects a wifi network as priority by pasing ssid")
- public void wifiPriorityConnect(@RpcParameter(name = "wifiSSID") String wifiSSID,
- @RpcParameter(name = "wifiPassword") String wifiPassword) {
- WifiConfiguration wifiConfig = new WifiConfiguration();
- wifiConfig.SSID = "\"" + wifiSSID + "\"";
- if (wifiPassword == null)
- wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- else
- wifiConfig.preSharedKey = "\"" + wifiPassword + "\"";
+ public void wifiPriorityConnect(@RpcParameter(name = "SSID") String SSID,
+ @RpcParameter(name = "Password") @RpcOptional @RpcDefault(value = "") String Password) {
+ WifiConfiguration wifiConfig = genWifiConfig(SSID, Password);
WifiActionListener listener = new WifiActionListener(mEventFacade, "PriorityConnect");
mWifi.connect(wifiConfig, listener);
}