Android подключается к точке доступа Wi-Fi, когда экран выключен

Я работаю над проектом, который должен подключаться к 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 успешно, пока не включится экран. Я зарегистрировал состояние соискателя, оно в полном состоянии. Как говорит Google Docs:

Это состояние указывает, что соискатель завершил свою обработку для фазы ассоциации, и что соединение для передачи данных полностью настроено. Однако обратите внимание, что с этим соединением еще не может быть IP-адрес. Как правило, запрос DHCP должен быть отправлен в этот момент, чтобы получить адрес.

Поэтому я могу прийти к выводу, что при включении экрана отправляется запрос DHCP, устройство получает IP-адрес, и соединение успешно установлено. Но кто отвечает за отправку DHCP, wpa_supplicant или платформы Android, есть ли какие-либо документы по этому поводу? Как я могу подключиться к точке доступа Wi-Fi без включения экрана? Заранее спасибо!

1 ответ

Возможно, потому что ваше устройство использует функцию поворота Wi-Fi, когда на экране (Настройки -> Беспроводная связь и сеть -> Настройки WiFi -> (кнопка меню) Дополнительно -> Политика сна Wi-Fi) Ваше приложение не может подключиться к сети

Другие вопросы по тегам