请教几个连接wifi的问题:
1、扫描热点的时候,如何获得热点的协议、加密方式等信息?
2、WifiConfiguration.AuthAlgorithm,WifiConfiguration.GroupCipher ,WifiConfiguration.PairwiseCipher,WifiConfiguration.Protocol 分别是什么,我看了文档还是有点不太明白, 他们之间的关系是什么?
3、如何连接到一个加密的AP
4、如何获取连接失败的原因? addNetwork总是返回-1,enableNetwork总是返回false,如何知道具体是哪里出问题了。
实在不解,多多指教,非常感谢!
1、扫描热点的时候,如何获得热点的协议、加密方式等信息?
2、WifiConfiguration.AuthAlgorithm,WifiConfiguration.GroupCipher ,WifiConfiguration.PairwiseCipher,WifiConfiguration.Protocol 分别是什么,我看了文档还是有点不太明白, 他们之间的关系是什么?
3、如何连接到一个加密的AP
4、如何获取连接失败的原因? addNetwork总是返回-1,enableNetwork总是返回false,如何知道具体是哪里出问题了。
实在不解,多多指教,非常感谢!
public void StartScan()
{
mWifiManager.startScan();
//得到扫描结果
mWifiList = mWifiManager.getScanResults();
//得到配置好的网络连接
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}
//得到网络列表
public List<ScanResult> GetWifiList()
{
return mWifiList;
}
//查看扫描结果
public StringBuilder LookUpScan()
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++)
{
stringBuilder.append("Index_"+new Integer(i + 1).toString() + ":");
//将ScanResult信息转换成一个字符串包
//其中把包括:BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("\n");
}
return stringBuilder;
}问题2:这个问题你要看wifi的协议了。
如何连接一个AP,
对一个有networkID的WifiConfiguration只需要调用WifiManager的enableNetwork(networkId,true),没有配置过的AP,需要addNetwork,返回networkId,再调用enableNetwork(networkId,true)
详细过程可以参考源码的wifiSetting
第四个问题我也不知道我这是总返回true 不论 ssid和密码对不对 就是 true我都疯了<pre class="java" name="code">
/*
* wifi设置
*/ /*
* 打开wifi
*/
public int openWifi() {
try {
mWifiManager.setWifiEnabled(true);
return SUCCESS;
} catch (Exception e) {
return FAIL;
} } /*
* 打开wifi 连接指定的 wifi
*/
public int openWifi(String wifiName, String pwd) {
try {
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\""+wifiName+"\""; //账户 格式为 "ssid"
wc.preSharedKey = "\""+pwd+"\""; //该热点的密码 格式为 "pwd"
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
mWifiManager.setWifiEnabled(true);
wc.networkId = mWifiManager.addNetwork(wc);
mWifiManager.enableNetwork(wc.networkId, true);
return SUCCESS;
} catch (Exception e) {
return FAIL;
}
} /*
* 关闭wifi
*/
public int closeWifi() {
try {
mWifiManager.setWifiEnabled(false);
return SUCCESS;
} catch (Exception e) {
return FAIL;
}
} /*
* 获得wifi列表
*/
public String[] scanWifi() {
String[] res;
try {
mWifiManager.startScan();
mWifiList = mWifiManager.getScanResults();
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
res = new String[mWifiList.size() + 1];
res[0] = SUCCESS + "";
int i = 1;
for (ScanResult sr : mWifiList) {
res[i] = sr.toString();
Log.e(L, "ScanResult:" + sr.toString());
i++;
}
return res;
} catch (Exception e) {
res = new String[2];
res[0] = FAIL + "";
res[1] = e.toString();
return res;
}
} /*
* 连接wifi
*/
public int connectWifi(String wifiName, String pwd) {
try {
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\""+wifiName+"\""; //账户 格式为 "ssid"
wc.preSharedKey = "\""+pwd+"\""; //该热点的密码 格式为 "pwd"
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.networkId = mWifiManager.addNetwork(wc);
boolean bbb=mWifiManager.enableNetwork(wc.networkId, true);
Log.e(L, bbb+"");
return SUCCESS;
} catch (Exception e) {
return FAIL;
}
} /*
* 获得当前wifi状态
*/
public String[] getWifiState() {
String[] res = new String[2];
try {
mWifiInfo = mWifiManager.getConnectionInfo();
Log.e(L, "mWifiInfo:" + mWifiInfo.toString());
res[0] = SUCCESS + "";
res[1] = mWifiInfo.toString();
return res;
} catch (Exception e) {
res[0] = FAIL + "";
res[1] = e.toString();
return res;
}
}
</pre>
<br />