Android在一天中的某个时间设置重复闹钟

时间:2012-11-28 13:11:21

标签: android intervals repeatingalarm

我正在尝试设置一个重复闹钟,它将每分钟下载一个文件,但仅在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");
        }
  }

1 个答案:

答案 0 :(得分: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

希望这有帮助。