Разрешить данные Wi-Fi во время сна и пробуждения устройства - PullRequest
0 голосов
/ 28 февраля 2011

Я искал и не смог найти ответ на этот вопрос.Я работаю над приложением, которое будет работать все время.Я использую Wi-Fi, и все работает нормально, пока устройство не спит.Одно устройство отправляет многоадресные пакеты, а другое должно получить их и проснуться, но это не так.Прямо сейчас сетевой поток запускается из служебного потока, запущенного StartService() из моего основного класса.В сервисе я получаю блокировку wifi и блокировку wifi multicast, так что wifi и multicast «должны» оставаться включенными, когда устройство спит.Я также попытался добавить частичную блокировку в миксе, но все равно ничего не работает.Есть идеи?Я сейчас использую два нексуса под управлением Android 2.3.3.

1 Ответ

1 голос
/ 14 ноября 2011

Вам необходимо установить флаг PowerManager.ACQUIRE_CAUSES_WAKEUP в вашем WakeLock, однако флаг PowerManager.ACQUIRE_CAUSES_WAKEUP не работает с PowerManager.PARTIAL_WAKE_LOCK, но он должен работать с PowerManager.SCREEN_DIM_WAKE_LOCK. Приведенный ниже код должен пробудить дисплей и процессор вашего устройства, когда вы вызываете acqu () в WakeLock. 5-секундный сон должен дать вашему WiFi достаточно времени для пробуждения.

WakeLock lock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
                    | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
lock.acquire();
try {
    Thread.sleep(5000);
} catch (InterruptedException e) {                  
}   
// do work here..
lock.release()
...