2

我正在开发一个 android 应用程序,该应用程序涉及在范围内连接到特定的 wifi。一旦我完成了一些事情,我就会尝试连接回我原来的 wifi。出于某种奇怪的原因,它按照我的意愿连接到我原来的 wifi,但大约 30 秒后,它断开了连接。当我检查设备上的 wifi 设置时,它显示 wifi 已禁用。

总结一下:
1.连接Wifi W1。
2.当Wifi W2在范围内时,连接到那个(使用SSID),但请记住W1的SSID以备后用。
3. 断开与 W2 的连接并在 wifi 配置列表中查找 W1(使用 SSID)。找到后,连接到那个。

所有三个步骤都在工作,但由于某种原因,在第 3 步成功后不久(< 1 分钟),与 W1 的连接被设备断开并禁用。这只发生在我通过代码更改 wifi 连接时。这是我的代码的样子:“net”变量包含原始 wifi 连接的 SSID (W1) 的 SSID 值。有谁知道为什么我会在重新连接到原始 Wifi 后不久断开连接?

if(net!=""){
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
    for( WifiConfiguration i : list ) {
        if(i.SSID != null && i.SSID.contains(net)) {            
             wifiManager.disconnect();                          

             wifiManager.enableNetwork(i.networkId, true);

             wifiManager.setWifiEnabled(true);                  
             break;
        }           
     }
    }
4

1 回答 1

1

我有一个建议,我不确定这是否能解决问题,但值得一试

如果您放置在下面的代码中

if(net!=""){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.contains(net)) {            
         wifiManager.disconnect();      

         //place a sleep on thread so that the underlying hardware gets some time to disconnect
        Thread.sleep(10000);
        //Now trying connecting to the previous network. Also try increasing the time to wait if 5 seconds is not working.   

         wifiManager.enableNetwork(i.networkId, true);

         wifiManager.setWifiEnabled(true);                  
         break;
    }           
 }
}

编辑:

它似乎与超过 10 秒的间隔一起工作。我认为这个时间间隔取决于设备的 WiFi 芯片组,它需要一些时间来断开与当前网络的连接并连接到其他网络。此外,如果设备具有低质量的芯片组,则可能需要更长的时间另外我认为如果设备具有高质量的芯片组,那么它会快得多..

于 2013-04-07T11:21:35.663 回答