关于AlarmManager闹钟提醒的功能,
本人现在在正做一个日程提醒的功能。现在有一个AgendasActivity,该Activity显示的是数据库里查询出来的日程任务,其中有日程的开始时间。
现在我要做的是设置一个闹钟提醒功能。就是时间到了日程的开始时间后,自动打开AgendasActivity。
现在假设有3条日程。
日程1:开始时间是 2012-06-07 08:00:00
日程2:开始时间是 2012-06-07 09:00:00
日程3:开始时间是 2012-06-07 10:00:00
要求就是时间分别到达这3个时间点,闹钟都会响,而且自动打开AgendasActivity。该怎么实现。
看了网上都是用alarmmanager.set方法,现在的问题是alarmmanager.set()方法写在哪个Activity中?是AgendasActivity还是重新新建一个Activity?
我现在自己做的是把他放在Broadcast中的,但是时间到点后不起作用.
public class BootReceive extends BroadcastReceiver{
private static final String SQL = "MPBT_DailySchedule 4, '" ;
private static final String[] PARAMS = new String[]{"ID","EmployeeID","Subject","Site",
"BeginDate","BeginTime",
"EndTime","RatingID", "StateName",
"ReminderID", "RemindStyleID","Content",
"Result","CreatorID","CreatedDate","State"};
private ArrayList<HashMap<String, Object>> datelist;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//设置闹钟提醒功能
//得到AlarmManager管理权限
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
//AlarmManager要做的事情,打开Activity
//创建PendingIntent,将intent 添加到里面
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, AgendasActivity.class), PendingIntent.FLAG_ONE_SHOT);
//根据设置的提醒方式,对闹钟进行设定提醒
/** RemindStyleID:
* 0提前0分
* 1提前5分
* 2提前15分
* 3提前30分
* 4提前1小时
* 5提前2小时
*/
datelist = AgendasDBUtil.select(SQL + "430" + "'", PARAMS);
System.out.println(datelist);
Calendar RemindTime = Calendar.getInstance();//获取当前时间
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
for(int i=0;i<datelist.size();i++){
if(datelist.get(i).get("RemindStyleID").toString().equals("0")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(datelist.get(i).get("RemindStyleID").toString().equals("1")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
RemindTime.add(Calendar.MINUTE, -5);
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(datelist.get(i).get("RemindStyleID").toString().equals("2")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
RemindTime.add(Calendar.MINUTE, -15);
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(datelist.get(i).get("RemindStyleID").toString().equals("3")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
RemindTime.add(Calendar.MINUTE, -30);
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(datelist.get(i).get("RemindStyleID").toString().equals("4")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
RemindTime.add(Calendar.HOUR_OF_DAY, -1);
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(datelist.get(i).get("RemindStyleID").toString().equals("5")){
try {
RemindTime.setTime(dft.parse(datelist.get(i).get("BeginDate").toString() + " " + datelist.get(i).get("BeginTime").toString()));
RemindTime.add(Calendar.HOUR_OF_DAY, -2);
alarm.set(AlarmManager.RTC_WAKEUP, RemindTime.getTimeInMillis(), pendingIntent);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
补充:移动开发 , Android