2011-08-17 4 views
1

나는 안드로이드 폰이 하나의 와이파이 네트워크에서 다른 와이파이 네트워크로 신속하게 전환 할 것을 요구하는 오디오 통신 애플리케이션을 개발 중이다. 현재, 내 코드는 이미 환경에 존재하며 미리 구성된 WiFi 네트워크를 7 초에서 15 초 사이에서 전환 할 수 있습니다. 전환하기 위해이 시간을 단축 할 수 있습니까? 사용자가 한 WiFi 네트워크에서 다음 WiFi 네트워크로 로밍 할 때 어떤 일시 중지도 들리지 않도록 15 초 이상 오디오를 버퍼링해야합니다.가장 빠른 와이파이 액세스 포인트 스위칭

private void SwitchWifi(){ 

    int myBestNetworkStrength = -60; 
    int myBestNetworkID = -1; 
    List<WifiConfiguration> currentConfig = myManager.getConfiguredNetworks(); 
    if(myManager.startScan()){ 
     if(myNetworks==null){ 
      Initialize(); 
     } 
     List<ScanResult> wifiList = myManager.getScanResults(); 
     for(int i = 0; i < wifiList.size(); i++){ 
      for(int j = 0; j < myNetworks.size(); j++){ 
       if(wifiList.get(i).SSID.matches(myNetworks.get(j).mySSID)){ 
        if(myBestNetworkStrength < wifiList.get(i).level){ 
         for(int k = 0; k < currentConfig.size(); k++){ 
          DebugScreen.AddLog("WIFIswitch", "k = " + currentConfig.get(k).SSID); 
          if(currentConfig.get(k).SSID.matches("\"" + wifiList.get(i).SSID+ "\"")){ 
           myBestNetworkID = k; 
           myBestNetworkStrength = wifiList.get(i).level; 
          } 
         } 
        } 
       } 
      } 
     } 
    }// 
    DebugScreen.AddLog("WIFIswitch", "Best network strength is " + Integer.toString(myBestNetworkStrength) + " with network #" + Integer.toString(myBestNetworkID)); 
    if(myBestNetworkID != -1){ 
     MailService.is_Waiting_For_New_Connection = true; 
     while(!MailService.has_Entered_Pause_Loop){ 
      if(!isAlive()) 
       return; 
     } 
     myManager.disconnect(); 
     myManager.enableNetwork(myBestNetworkID, true); 
     myManager.reconnect(); 
     MailService.is_Waiting_For_New_Connection = false; 
    } 
} 
+0

연결 시도가 성공했다고 가정하지 않고 반환 값을 캡처해야합니다. – Brian

답변

0

어쩌면 당신은 정기적으로 검사 관찰 가능한 확장 (또는 사용자 정의 리스너를 구현) 객체 가질 수 (스레드에서?)를 최적의 네트워크 무엇. 현재 네트워크가 더 이상 좋지 않다는 것을 감지하면 관찰자에게 알리고 (또는 청취자를 시작) 실제로 새 네트워크를 활성화/재 연결합니다.

그래서 가장 좋은 네트워크를 찾아내는 데는 항상 7-15 초가 걸리지 만 백그라운드에서 수행되기 때문에 네트워크에서 다른 네트워크로 전환하는 것이 거의 즉시 효과적입니다.