2017-01-22 2 views
2

Я пишу программу, которая всегда подключается к самой сильной точке доступа. Я имею в виду точку доступа с самым сильным сигналом. Сначала я просматриваю все доступные сети Wi-Fi, а затем ограничиваю их только тем, у кого есть тот же SSID.Подключитесь к самой сильной точке доступа (точка доступа с самым сильным сигналом) с тем же SSID

Таким образом, я могу видеть все точки доступа одной сети. Когда я подключаюсь к этой сети, он не подключается к самому сильному сигналу, но я хочу, чтобы он переключился на самый сильный сигнал AP. По

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

Я понимаю, лучший сигнал.

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

} 

Вопрос, что я должен делать в этом случае функция подключения к сильным 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

Вы также должны добавить BSSID с конф. Хотя разные сети имеют одинаковые SSID, у них будет другой BSSID. Добавим эту строку.

WifiConfiguration conf = new WifiConfiguration(); 
      conf.SSID = "\"" + bestSignal.SSID + "\""; 
      conf.BSSID= "\"" + bestSignal.BSSID+ "\""; 
Смежные вопросы