如何在特定日期范围内设置闹钟?

时间:2016-09-14 10:30:39

标签: android alarmmanager android-alarms

我很长时间都在寻找这个要求而找不到任何东西。所以我正在寻求你们的帮助。

我需要在特定的日期范围内设置闹钟管理器。我的意思是2016年9月28日至2016年9月30日,具体时间为13:00。

目前我可以设定特定日期。但不是日期范围。我现在的情况如下。

AlarmManager objAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);              
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, 2016);
        calendar.set(Calendar.MONTH, 8);
        calendar.set(Calendar.DAY_OF_MONTH, 28);
        calendar.set(Calendar.HOUR_OF_DAY, 13);
        calendar.set(Calendar.MINUTE, 00);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.AM_PM, Calendar.AM);         

        Intent alamShowIntent = new Intent(this,AlarmActivity.class);
        PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0,alamShowIntent,0 );

        objAlarmManager.set(AlarmManager.RTC_WAKEUP,objCalendar.getTimeInMillis(), alarmPendingIntent);

请你在这方面帮助我。

出现的一个想法是找到日期范围之间的差值,并在特定时间内重复闹钟数天。这是正确的做法吗?

此致 沙拉斯

2 个答案:

答案 0 :(得分:0)

  1. 安排2016年9月28日13:00的第一次警报。
  2. 在触发警报时运行的代码中,重新安排警报。使用当前日期并添加24小时,以便明天同一时间点火。
  3. 执行第2步,除非日期在9月30日过去。警报不会重新安排,也不会再发生。
  4. 此方法要求您使用重复警报,例如setRepeating()。但是,如果您正在为Android 6.0+开发,这很方便,因为重复警报不会在打盹模式下触发。

答案 1 :(得分:0)

在设置新警报时,无法通过警报提供警报到期。 我建议把你的警报有效期限告上意图,即alamShowIntent&在所需时间内使用setRepeating()警报。在每个报警事件中,检查结束日期应该大于报警发出的时间。如果它是那么你的任务&如果没有,则用相同的PendingIntent取消警报。

相关问题