2017-01-22 26 views
2

항상 가장 강력한 액세스 포인트에 연결하는 프로그램을 작성 중입니다. 가장 강한 신호를 가진 액세스 포인트를 의미합니다. 먼저 사용 가능한 모든 무선 네트워크를 스캔 한 다음 동일한 SSID를 가진 무선 네트워크 만 볼 수 있도록 제한합니다.동일한 SSID로 가장 강력한 액세스 포인트 (신호가 가장 강한 액세스 포인트)에 연결

그래서 한 네트워크의 모든 AP를 볼 수 있습니다. 해당 네트워크에 연결할 때 가장 강한 신호에 연결하지 않지만 가장 강한 신호로 전환하려고합니다.

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

나는 가장 좋은 신호를 알고 있습니다.

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

} 

가장 강력한 AP (신호가 가장 강한 AP)에 연결하는 기능이 있다면 무엇을해야합니까?

다음은 내 코드 만에 신호를 추가 할 수있는 방법이 없습니다 : 당신은 또한 conf의와 BSSID를 추가해야

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

은. 서로 다른 네트워크가 동일한 SSID를 가지고 있더라도 서로 다른 BSSID를 갖습니다. 해당 행을 추가하면됩니다.

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