2016-09-14 163 views
2

我从很长时间以来一直在寻找这个要求,并且找不到任何东西。所以我正在寻求你们的帮助。如何在特定日期范围内设置闹钟?

我有一个需求,我需要在特定日期范围内设置闹钟管理器。我的意思是从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); 

请问您可以帮我解决这个问题。

想到的一个想法是找到日期范围之间的增量,并在该特定时间重复闹钟。这是正确的方法吗?

问候, 沙拉斯

回答

0
  1. 时间表2016年9月28日在13.00h第一个报警。
  2. 在警报启动时运行的代码中,重新安排警报。使用当前日期并添加24小时,以便明天同时启动。
  3. 做第2步除非日期过去9月30日。警报不会重新计划,不会再发射。

这种方法需要你使用重复报警像setRepeating()。但是,如果您正在开发Android 6.0+,那么这很方便,因为重复闹钟不会在睡眠模式下触发。

0

在设置新警报时,您无法通过该警报提供到期的警报。 我会建议把你的报警到期日期的意图,即alamShowIntent &使用setRepeating()报警所需的时间。在每一次闹铃事件中,都要检查结束日期是否应该大于闹铃时间。如果是,则执行任务&如果不是,则使用相同的PendingIntent取消警报。

相关问题