我一直致力于wifi连接。我可以使用Android设备打开wifi热点,另一个Android设备连接到它。
但这是一个问题。我发现wifi状态将断开连接并重新连接到它已经记住的wifi和最后一个(我猜它发现热点准备好了)再次断开连接并重新连接到我的wifi热点。这个过程花了将近20~30秒。
这是我的代码:
private void connectToWiFiHotSpot() {
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
mWifiConfig = new WifiConfiguration();
mWifiConfig.SSID = "\"test5678\"";
mWifiConfig.preSharedKey = "\"12345678\"";
mWifiConfig.priority = 100000;
int res = wifiManager.addNetwork(mWifiConfig);
Log.d("WifiPreference", "add Network returned " + res);
wifiManager.disconnect();
boolean isEnable = wifiManager.enableNetwork(res, true);
Log.d("WifiPreference", "enable Network returned " + isEnable);
wifiManager.reconnect();
}
我的问题是有没有办法让我的设备直接连接到我的热点,而无需连接到它记住的内容。加快并提高绩效。
我已经尝试设置高优先级并删除其他记住wifi配置不是我想要的。
任何帮助我将不胜感激。
答案 0 :(得分:1)
好的,我找到了解决方案。
在添加指定的wifi配置之前禁用所有其他已配置的网络。
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
//disable others
for (WifiConfiguration wifiConfiguration: wifiManager.getConfiguredNetworks()) {
wifiManager.disableNetwork(wifiConfiguration.networkId);
}
mWifiConfig = new WifiConfiguration();
mWifiConfig.SSID = "\"test5678\"";
mWifiConfig.preSharedKey = "\"12345678\"";
mWifiConfig.priority = 100000;
int res = wifiManager.addNetwork(mWifiConfig);
Log.d("WifiPreference", "add Network returned " + res);
wifiManager.disconnect();
boolean isEnable = wifiManager.enableNetwork(res, true);
Log.d("WifiPreference", "enable Network returned " + isEnable);
wifiManager.reconnect();
它将直接连接到你指定的wifi而不是连接到它首先记住的其他wifi。
最后,你断开连接到那个wifi。不要忘记启用其他无线网络。
它将连接到已连接的wifi。
for (WifiConfiguration config: wifiManager.getConfiguredNetworks()) {
wifiManager.enableNetwork(config.networkId, true);
}