【问题标题】:connecting to wifi in Android在 Android 中连接到 wifi
【发布时间】:2013-04-06 14:13:47
【问题描述】:

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

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

所有三个步骤都在工作,但由于某种原因,在步骤 3 成功后不久(

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;
        }           
     }
    }

【问题讨论】:

  • 当您执行测试时,您的设备连接到 w1 后 w2 何时进入范围?
  • 是的,w2 在连接到 w1 时进入范围。我从 w1 断开连接并连接到 w2。然后我关闭 w2 并重新建立与 w1 的连接。它连接到 w1,但很快就掉线了
  • "When Does" 表示 w1 连接后的时间?
  • 在应用程序中执行了一系列步骤。在大部分应用程序中,我都连接到 W1。我启动一个操作,然后告诉应用程序开始寻找 W2。它会在大约 30 秒左右的时间内找到 W2。这是因为 W2 需要一些时间来建立与设备的连接。请记住,W1 是设备的默认连接。因此,对于这个应用程序以及在使用 W1 的设备上完成的所有其他操作。这能回答你的问题吗?
  • 是的,谢谢。如果您发现任何异常,请在下面查看我的答案并分享任何日志。

标签: android wifi android-wifi wifimanager access-point


【解决方案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 芯片组,它需要一些时间来断开与当前网络的连接并连接到其他网络。此外,如果设备具有低质量的芯片组,则可能需要更长的时间另外我认为,如果设备具有高质量的芯片组,那么它会快得多..

【讨论】:

  • 这不起作用。我确实将线程延长到睡眠 10 秒,但仍然没有。此应用程序需要以快速方式执行,因此如果我将其延长超过 10 秒并且它确实有效,但仍然无法为我提供可接受的解决方案。无论如何感谢您的建议。我很感激。
  • @RZulfekar 至少很高兴听到它在超过 10 秒的时间范围内工作。请问你能告诉我它有多少时差吗?这个时间间隔取决于设备的 WiFi 芯片组,它需要一些时间来断开当前网络并连接到其他网络。此外,如果设备的芯片组质量较低,则可能需要更长时间,您使用什么设备进行测试?另外我认为如果设备具有高质量的芯片组,那么它会更快......
  • 再次感谢。无论如何,我将其标记为答案,因为确实如此
  • 谢谢!我已经编辑了答案以放置 10 秒和更多信息..以便将来可以帮助其他人。
猜你喜欢
  • 2020-01-25
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多