使用alarmManager每天设置不规则报警

时间:2013-04-16 00:17:36

标签: android alarm

我想在特定时间每天设置通知/闹钟。请注意,这些时间可能每天都不同。例如,我有一个数据库,我可以从中获得5个不同的条目/时间,例如早上6点,下午1点30分,下午4点30分,晚上7点30分,晚上10点。我想为这些时间设置闹钟。第二天这些时间可能会有所不同。他们可能会关闭2-5分钟或更长时间。 基本上我不能每天在同一时间设置定期闹钟。我需要检查我的数据库中的条目,以了解我应该安排它的时间。

这样做的有效方法是什么?我查看了一些堆栈溢出问题,用于设置多个警报。但这里我该怎么做?我应该只阅读整周的数据库条目,即5天/天,连续7天......并且一起设置大约35个警报?或者我应该一次设置一个警报。当该警报被触发时,只需从数据库中读取下一个条目并为该时间安排警报?

1 个答案:

答案 0 :(得分:1)

编写一个服务,每天在特定时间从数据库中获取5个值。

然后在AlarmManger中添加具有不同唯一ID的多个条目。

在特定时间添加闹钟

Calendar calendar = Calendar.getInstance();

//9 AM 
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, YourClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

设置多个闹铃:

AlarmManager[] alarmManager=new AlarmManager[24];
intentArray = new ArrayList<PendingIntent>();
for(f=0;f<arr2.length;f++){
   Intent intent = new Intent(AlarmR.this, Riciving.class);
   pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0);

   alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
   alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi);

   intentArray.add(pi);

}

希望这应该有用。