簡體   English   中英

Android:如何從AlarmManager喚醒WIFI(或3G)?

[英]Android: How to wake WIFI (or 3G) from AlarmManager?

我有這個應用程序需要每隔30分鍾從服務器提取數據,經過大量搜索后我達到了這個解決方案:1-使用AlarmManager每30分鍾通知應用程序,而不是讓服務在后台運行。 2-使用帶有PARTIAL_WAKE_LOCK的喚醒鎖

我唯一的問題是Wifi在睡眠時間關閉。

當我的鬧鍾被觸發時,如何請求我需要互聯網連接?

  1. 警報管理器通過接收器喚醒您的喚醒意圖服務
  2. 清醒意圖服務獲取wifi鎖
  3. 服務注冊接收器以進行連接並調用reconnect()reassociate()以及需要的任何內容(這可能是設備特定的)
  4. 服務等待閂鎖
  5. 當連接wifi時,接收器喚醒服務

骨架代碼: https//stackoverflow.com/a/19968708/281545

適用於Android 6(API級別23)及更高版本的注意事項。 自谷歌推出Optimizing for Doze和App Standby以來,事情變得越來越復雜。 請看這里 - https://developer.android.com/training/monitoring-device-state/doze-standby.html現在,在特定時間強制訪問網絡要困難得多。

前段時間我遇到了完全相同的問題。 不幸的是我沒有成功。 我嘗試了以下方法:

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

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

    }

也許你可以玩WifiManager並找到一種我找不到的方法。 哦,是的,不要忘記在清單中設置WIFI權限。

干杯盧卡斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM