我正在写一个程序,总是连接到最强的接入点。我是说信号最强的接入点。首先,我扫描所有可用的WiFi网络,然后限制它们只查看具有相同SSID的网络。
这样我就可以看到一个网络的所有AP。当我连接到那个网络时,它没有连接到最强的信号,但我希望它切换到最强的AP信号。通过
WifiManager.compareSignalLevel(bestSignal.level, connectedAP.level) <0 我明白最好的信号。
if(WifiManager.compareSignalLevel(bestSignal.level, connectedAP.level) <0){
}问题是我应该在这个if函数中做什么来连接到最强的AP (具有最强信号的AP)?
下面是我的代码,但没有办法将信号添加到其中:
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + bestSignal.SSID + "\"";
// I want to connect to the access point with signal bestSignal.level
//how is it possible?
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list =wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null &&
i.SSID.equals("\"" + bestSignal.SSID + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}发布于 2017-04-25 13:28:58
您还应该使用conf添加BSSID。即使不同的网络具有相同的BSSID,它们也会具有不同的BSSID。添加这一行就可以了。
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + bestSignal.SSID + "\"";
conf.BSSID= "\"" + bestSignal.BSSID+ "\"";https://stackoverflow.com/questions/41788364
复制相似问题