0

我正在创建一个警报小部件,它可以工作,但是,我目前正在使用它一天,我想知道如何为预定义的日期定义它,例如我想设置警报器周一、周三和周五,我该怎么做呢?

    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,但我将更改设计以每天使用复选框,但我不确定如何定义选定日期的警报,有帮助吗?太感谢了。

4

2 回答 2

0

一次定义它们我不知道这是否可以实现,但我有另一个场景可以使用。假设您将警报调整为在星期一、星期二、星期四触发。您将仅在星期一调整AlarmManager,在星期一它应该触发并检查下一个警报(将在星期二)等等。将所有警报保存在数据库中,并将它们一一取出,并在每个警报中检查下一个(如果存在)

于 2013-10-10T14:11:00.710 回答
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
于 2013-10-10T14:12:11.710 回答