当前位置:编程学习 > wap >>

关于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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,