Android 尽可能快的Wifi接入点切换

Android 尽可能快的Wifi接入点切换,android,audio,wifi,buffering,Android,Audio,Wifi,Buffering,我正在开发一个音频通信应用程序,它要求android手机从一个WiFi网络快速切换到另一个。目前,我的代码需要7到15秒的时间切换WiFi网络,它已经知道这些网络存在于环境中,并且是预先配置的。是否有可能加快切换的时间。我是否必须对15秒以上的音频进行缓冲,这样当用户从一个WiFi网络漫游到下一个网络时,他们就不会听到任何暂停 private void SwitchWifi(){ int myBestNetworkStrength = -60; int myBestNetwo

我正在开发一个音频通信应用程序,它要求android手机从一个WiFi网络快速切换到另一个。目前,我的代码需要7到15秒的时间切换WiFi网络,它已经知道这些网络存在于环境中,并且是预先配置的。是否有可能加快切换的时间。我是否必须对15秒以上的音频进行缓冲,这样当用户从一个WiFi网络漫游到下一个网络时,他们就不会听到任何暂停

 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;
    }
}
private void SwitchWifi(){
int myBestNetworkStrength=-60;
int myBestNetworkID=-1;
List currentConfig=myManager.getConfiguredNetworks();
if(myManager.startScan()){
if(myNetworks==null){
初始化();
}
List wifiList=myManager.getScanResults();
对于(int i=0;i
也许您可以拥有一个扩展Observable的对象(或者实现一个自定义侦听器),定期检查(在线程中?)什么是最好的网络。当您检测到当前网络不再是最佳网络时,您只需通知观察者(或启动侦听器),并实际启用/重新连接到新网络


因此,检测什么是最佳网络将始终持续7到15秒,但正如在后台所做的那样,从一个网络切换到另一个网络几乎会立即生效。

您应该捕获返回值,而不是假设连接尝试成功。