0

我正在开发一个需要在后台服务中连接到 Wi-Fi 的项目,该服务在设备屏幕关闭时运行。连接代码如下:

    public boolean connect_android(String ssid) {
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
    boolean find = false;
    for( WifiConfiguration i : list ) {
        if(i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) {
             wifiManager.enableNetwork(i.networkId, true);
             wifiManager.reconnect();
             find = true;
             break;
        }           
     }

而在后台运行服务中执行连接代码后,设备永远不会成功连接到Wi-Fi,直到屏幕打开。我记录了请求者状态,它处于完整状态。正如谷歌文档所说:

此状态表示请求者已完成关联阶段的处理,并且数据连接已完全配置。但是请注意,可能还没有任何与该连接关联的 IP 地址。通常,此时需要发送 DHCP 请求以获取地址。

所以我可以得出结论,当屏幕打开时,发送 DHCP 请求,设备接收 IP 并且连接成功完成。但是谁负责发送 DHCP、wpa_supplicant 或 Android 框架,有没有关于这个的文档?如何在不打开屏幕的情况下连接到 Wi-Fi AP?提前致谢!

4

1 回答 1

1

可能是因为您的设备在(设置 -> 无线和网络 -> WiFi 设置 ->(菜单按钮)高级 -> Wifi 睡眠策略)屏幕时使用了 wifi 功能,您的应用将无法连接到网络

于 2015-03-23T02:55:32.913 回答