2013-10-10 45 views
0

我正在创建一个闹钟小部件,但它的工作原理,但是,我目前正在使用它一天,我想知道如何定义它预定义的日子,比方说,例如我想设置周一,周三和周五的警察,我怎么能做到这一点?如何设置AlarmManager预选日期?

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,但我会改变设计使用复选框,每个每天,但我不知道如何定义选定天报警,任何帮助?非常感谢。

回答

0

立即定义它们,我不知道这是否可以实现,但我有另一种方案来使用。假设你调整了星期一,星期二,星期四的闹钟。您将在星期一和星期一调整AlarmManager它应该启动并检查下一次警报(将在周二),依此类推。保存所有你报警数据库中,并带他们出去一个是一个,并为下一个各警报检查(如果存在)

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 
+0

我可能会尝试这个,在一个for循环取决于我的应用程序中标记了多少个复选框;我有一个问题:当你关掉手机时,这些AlarmManager实例是否被“删除”?我的意思是,该设置是否会被删除?谢谢! – saman0suke

+0

在Android开发人员Api中,您可以阅读以下内容:注册的警报在设备处于睡眠状态时保留(如果在此期间关闭设备,可以选择将设备唤醒),但如果关闭并重新启动,则会被清除。 – Ligio

相关问题