Android: как вывести WIFI (или 3G) из AlarmManager? - PullRequest
4 голосов
/ 04 февраля 2012

У меня есть это приложение, которое должно извлекать данные с сервера каждые 30 минут, после долгих поисков я нашел следующее решение: 1 - с помощью AlarmManager каждые 30 минут уведомлять приложение, а не поддерживать службу в фоновом режиме.2- использование wakelocks с PARTIAL_WAKE_LOCK

Моя единственная проблема заключается в том, что Wi-Fi отключен во время сна.

Как я могу запросить, чтобы мне было нужно подключение к Интернету, когда мой будильник срабатывает ??

Ответы [ 3 ]

0 голосов
/ 14 ноября 2013
  1. диспетчер аварийных сигналов разбудит вашу службу бодрствующих намерений через приемник
  2. услуга «бодрствующий умысел» приобретает блокировку wifi
  3. служба регистрирует получателя для подключения и вызовов reconnect(), reassociate() и всего необходимого (это может быть специфично для устройства)
  4. сервис ожидает защелки
  5. Приемник активирует услугу при подключении к Wi-Fi

Скелетный код: https://stackoverflow.com/a/19968708/281545

0 голосов
/ 21 апреля 2017

Примечание для Android 6 (уровень API 23) и выше. С тех пор, как Google ввел Оптимизацию для Doze и ожидания приложений, все становится сложнее. Смотри сюда - https://developer.android.com/training/monitoring-device-state/doze-standby.html Теперь принудительно получить доступ к сети в определенное время гораздо сложнее.

0 голосов
/ 04 февраля 2012

У меня была точно такая же проблема некоторое время назад. К сожалению, мне не удалось. Я попробовал следующее:

    WifiManager wman = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);

    try {
        wman.reconnect();
    } catch (Exception e) {
        e.printStackTrace();
        return false;

    }

Возможно, вы можете поиграть с WifiManager и найти способ, которого я не нашел. О да, не забудьте установить разрешения WIFI в манифесте.

Приветствия Лукас

...