使用相同的SSID连接到最强的接入点(信号最强的接入点)

时间:2017-01-22 07:20:39

标签: android wifi android-wifi wifimanager access-point

我正在编写一个程序来始终连接到最强的访问点。我的意思是信号最强的接入点。首先,我扫描所有可用的WiFi网络然后限制它们只看到具有相同SSID的那些。

所以我可以看到一个网络的所有AP。 当我连接到该网络时,它没有连接到最强的信号,但我希望它切换到最强的AP信号。 由

WifiManager.compareSignalLevel(bestSignal.level, connectedAP.level) <0  

我理解最好的信号。

if(WifiManager.compareSignalLevel(bestSignal.level, connectedAP.level) <0){

}

问题是我应该怎么做才能连接到最强的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;
                    }
                }

1 个答案:

答案 0 :(得分:1)

您还应该使用conf添加BSSID。即使不同的网络具有相同的SSID,它们也将具有不同的BSSID。添加该行即可。

WifiConfiguration conf = new WifiConfiguration();
             conf.SSID = "\"" + bestSignal.SSID + "\"";
             conf.BSSID= "\"" + bestSignal.BSSID+ "\"";