一天中的特定时间的Android设定重复报警(Android set repeating alarm

2019-08-03 06:52发布

我想设置重复报警,将将下载文件中的每一分钟,但只有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");
        }
  }

Answer 1:

你应该让你的闹钟reapeating当它是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

希望这可以帮助。



文章来源: Android set repeating alarm for certain time of day