2013-03-22 78 views
3

我有一個Android應用程序,每晚都會喚醒並與我們的服務器同步一些數據。如果設備在一段時間沒有使用(或關閉屏幕)後將WiFi置於睡眠模式,我需要喚醒Wifi並執行同步,然後讓其返回睡眠模式。所以這裏是我發現的:如何重新連接Android上當前處於睡眠模式的WiFi

如果Wifi處於睡眠模式,我可以看到(通過dumpsys)wifi仍然啓用,但runState停止。所以,在我的代碼,我會做類似

WifiManager wManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE); 
wManager.setWifiEnabled(true); 
    boolean connect = wManager.reconnect(); 
    Log.d(TAG, "connect " + connect); 

我不認爲setWifiEnabled(真)是必要的,因爲它仍然是在睡眠啓用。但是我反正做了,沒有任何傷害。但重新連接總是返回false,這意味着它不能重新連接wifi。當然,dumpsys仍然顯示runState已停止。

有人可以幫助我解決這個問題嗎?什麼是正確的程序來喚醒Wifi並獲得工作連接?

在此先感謝!

+0

使用喚醒鎖! – TacB0sS 2013-03-22 20:36:29

+0

謝謝!那就是訣竅。你介意創建一個答案,以便我可以接受它嗎? – Safecoder 2013-03-22 21:01:54

+0

你是否設法解決這個問題?在我的IntentService中,我獲得了部分喚醒鎖,但WiFi仍然保持睡眠狀態 – 2016-05-31 18:00:14

回答

0

通常當設備處於休眠模式,真正喚醒它,唯一的辦法就是獲得一個喚醒鎖......有幾個類型喚醒鎖定的,你可以讀到它here ...

希望這有助於...

+0

這是錯誤的,因爲您需要在Wifi進入睡眠狀態之前獲取WiFi鎖定... – BQuadra 2014-01-29 23:24:37

+0

如果您希望在設備正在進入睡眠模式,我指的是喚醒設備,啓用WiFi適配器,然後再次使用它......我非常肯定,我不需要事先要求提供Wifi活動! – TacB0sS 2014-01-30 11:17:52

+0

是的,這是真的! – BQuadra 2014-01-30 12:43:49