1

ファイルを毎分ダウンロードする繰り返しアラームを設定しようとしていますが、8:00 から 22:00 の間だけです。私は本当に近づいているように感じますが、私が作っているエラーを見ることはできません. 現在、ブロードキャスト レシーバーはアクティブ化されていません。繰り返しアラームを手動で設定する場合は、alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, 60000,pendingIntent); それは正常に動作します。どんなガイダンスでも大歓迎です。

protected void scheduleNextUpdate()
      {
        Intent intent = new Intent("TEST");
        PendingIntent pendingIntent =
            PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        int updateInterval =  1;
        long nextUpdate =(60000 * updateInterval);

        long currentTimeMillis = System.currentTimeMillis();


        long nextUpdateTimeMillis = currentTimeMillis + nextUpdate;
        Time nextUpdateTime = new Time();
        nextUpdateTime.set(nextUpdateTimeMillis);

        if (nextUpdateTime.hour < 8 || nextUpdateTime.hour > 22)
        {
          nextUpdateTime.hour = 8;
          nextUpdateTime.minute = 0;
          nextUpdateTime.second = 0;
          nextUpdateTimeMillis = nextUpdateTime.toMillis(false) + DateUtils.DAY_IN_MILLIS;
        }

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, nextUpdateTimeMillis,pendingIntent);

        boolean alarmUp = (PendingIntent.getBroadcast(this, 0, 
                new Intent("TEST"), 
                PendingIntent.FLAG_NO_CREATE) != null);

        if (alarmUp)
        {
            Log.d("myTag", "Alarm is already active");
        }
  }
4

1 に答える 1

1

あなたが言及したように、8:00 から 22:00 の間にアラームを繰り返すように設定する必要があります。

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, 60000,pendingIntent); 

これは毎分繰り返されます。ただし、アラームを明示的にキャンセルする必要があります。ダウンロードが完了したら、22:00 になっていることを確認してキャンセルできます。または、22:00 になるとトリガーされる別のアラームによって。そうしないと止まりません。

使用するalarmManager.cancel (pendingIntent)

ここで説明: http://developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent

お役に立てれば。

于 2012-11-28T16:22:54.897 に答える