2015-10-13 96 views
1

我是新来的android和使用alarmManager,我想知道是否有一种方法来设置在android触发例如每个星期一,直到某个特定日期的闹钟。就像这样: 开始日期15年10月9日 提醒我的东西在下午2:30 每星期一直到 结束日期15年11月9日如何设置android闹钟触发,直到特定日期

+0

到底是什么,你所面临的问题? –

+0

我需要一个关于如何做到这一点的例子,因为我不完全知道如何编程alarmManager来使它做到这一点,我不知道我是否清楚地解释自己。 :) – Arturouu

回答

1
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 14); 
     calendar.set(Calendar.MINUTE, 30); 
     int weekInMillis = 7 * 24 * 60 * 60 * 1000; 

     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
       weekInMillis, PendingIntent.getBroadcast(context, 0, new Intent(context, ReminderAlarmWakefulBroadcastReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT)); 

上面的代码片段为每周重复2:30 PM设置警报。调整calendar用于改变闹钟响起的时间。例如,即将到来的星期一。

当闹铃响起时,它会发出一个广播,该广播将由ReminderWakefulBroadcastReceiver接收,它是一个自定义接收器,其中包含您想要在每个星期一下午2:30运行的代码。此代码还应该检查是否是时候取消报警,如果是,下面的代码将其取消:

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarmManager.cancel(PendingIntent.getBroadcast(context, 0, new Intent(context, ReminderAlarmWakefulBroadcastReceiver.class)); 

参考文献: AlarmManagerScheduling Repeating AlarmsPendingIntent

0

如果你知道如何设置报警,解决方法很简单:

1)当您设置闹钟时,计算您希望运行的最大时间戳,并将其保存为本地首选项。

2)然后在闹钟代码本身中,每次触发时都可以进行第一次测试,以查看当前时间戳是在第一次保存的限制首选项之前还是之后。

3)如果到达,则取消警报,因为@karthik说。如果没有,请保持您的代码正在运行...