如何设置AlarmManager预选天数?

时间:2013-10-10 13:45:24

标签: android widget alarmmanager alarm

我正在创建一个警报小部件,它可以工作,但是,我目前正在使用它一天,我想知道如何定义它预定义的日子,让我们说例如我想设置周一,周三和周五的警报,我怎么能做到这一点?

    Calendar cal = Calendar.getInstance();

    cal.set(Calendar.YEAR, dPicker.getYear());
    cal.set(Calendar.MONTH, dPicker.getMonth());
    cal.set(Calendar.HOUR_OF_DAY, tPicker.getCurrentHour());
    cal.set(Calendar.MINUTE, tPicker.getCurrentMinute());
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);   

    alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), testThis(this));

我目前正在使用TimePicker和DatePicker,但我会将设计更改为每天使用复选框,但我不确定如何定义所选日期的警报,任何帮助?非常感谢你。

2 个答案:

答案 0 :(得分:0)

立即定义它们我不知道是否可以实现这一点,但我还有其他方案可供使用。 假设你在星期一,星期二,星期四调整警报。你将调整 AlarmManager 仅适用于星期一和星期一它应该触发并检查下一个警报(将在星期二),依此类推。将所有警报保存在数据库中并将它们一个一个地拿出来并在每个警报检查中检查下一个(如果存在)

答案 1 :(得分:0)

你可以像这样使用Calendar.DAY_OF_WEEK api:

cal1.set(Calendar.DAY_OF_WEEK,2);  //monday
cal2.set(Calendar.DAY_OF_WEEK,4);  //wednesday
cal3.set(Calendar.DAY_OF_WEEK,6);  //friday

并设置3个alarmMgr:

alarmMgr.set(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every monday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every wednesday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal3.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every friday