Android 尽可能快的Wifi接入点切换
我正在开发一个音频通信应用程序,它要求android手机从一个WiFi网络快速切换到另一个。目前,我的代码需要7到15秒的时间切换WiFi网络,它已经知道这些网络存在于环境中,并且是预先配置的。是否有可能加快切换的时间。我是否必须对15秒以上的音频进行缓冲,这样当用户从一个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
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秒,但正如在后台所做的那样,从一个网络切换到另一个网络几乎会立即生效。您应该捕获返回值,而不是假设连接尝试成功。