2011-12-23 2 views
0

まあ、私はサイトのバージョン(私はどのように知っているこの部分)6hまたはそれを確認したい。6時間ごとにタスクを実行する方法、またはAndroidでネットが利用可能な場合はどうすればよいですか?

だから私はserviceにこれを作ってAlarmManagerを使ってみようと考えていました。

サイトのバージョンを確認するにはインターネットが必要なので、インターネットがオンになっているかどうかを確認する必要があります。時間が経過した後、私よ


だから私の質問(うん、1つだけでなく!)、次のとおりです。

  1. AlarmManagerは、ディスプレイがスリープ状態になる場合でも動作しますしていますか?デバイスが起きるとは何時間経過したかを知り、それ以上経過した場合は6hそれはタスクを実行しますか?
  2. インターネットの利用状況を確認する方法を教えてください。
  3. インターネットの電源が入っているかどうかを知るには? (何らかの種類のbroadcast?)
  4. これは良い解決策ですか?

答えて

3

アラームマネージャ:

アラームマネージャが表示状態とは何の関係もありませんので、はいそれは画面がオフになっている場合でも動作することができます。

ネットワークAvaiabilityスニペット:

public boolean isNetworkAvailable() { 
    Context context = getApplicationContext(); 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity == null) { 
    boitealerte(this.getString(R.string.alert),"getSystemService rend null"); 
    } else { 
    NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
    if (info != null) { 
     for (int i = 0; i < info.length; i++) { 
      if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
       return true; 
      } 
     } 
    } 
    } 
    return false; 
} 

ネットワークが利用可能な場合、それは(など手の届かない機内モード、、)でない場合、この関数はfalseを、trueを返します

ドン」 tはあなたのマニフェスト

可能な解決策に許可を追加することを忘れ

は...アラームマネージャについて

+0

? –

+0

私はすぐにそれらを追加します、それは長い答えになるだろう... –

+0

私は私の答えを更新しました。もっと情報が必要ですか? –

1

ネットワークが利用可能な場合、この受信機では

public class ScreenReceiver extends BroadcastReceiver { 

    public static boolean wasScreenOn = true; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      // do whatever you need to do here 
      wasScreenOn = false; 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      // and do whatever you need to do here 
      wasScreenOn = true; 
     } 
    } 
} 

を要求するためのロジックを与え、以下のようなイベントに&画面から画面ための受信機を放送しています。ここで可能なコードは次のとおりです。

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent); 

どのデバイス振る舞う最初のパラメータの影響:

RTC - アラームは、デバイスアップをウェイクアップしません。それがオフになった場合、デバイスが眠っている間、それは、デバイスがウェイクアップし、次回まで配信されません

RTC_WAKEUP - ウェイクアップそれは消灯デバイスを

それは他の質問について、開始、および何
関連する問題