我正在构建一个警报应用程序 . 我已经成功实现了基本的报警功能 .
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.HOUR_OF_DAY, sHour);
calendar.set(calendar.MINUTE, sMin);
calendar.set(calendar.SECOND, 0);
calendar.set(calendar.MILLISECOND, 0);
long sdl = calendar.getTimeInMillis();
Intent intent = new Intent(AlarmList.this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(AlarmList.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager ALARM1 = (AlarmManager)getSystemService(ALARM_SERVICE);
ALARM1.set(AlarmManager.RTC_WAKEUP, sdl, sender);
在我的应用程序中,用户可以选择天 (sunday,monday...)
每周重复闹钟 . 我'm trying to create multiple alarms to repeat weekly but don't知道该怎么做 . 我可以使用(重复)间隔创建它还是应该创建多个警报管理器?
5 回答
您需要使用
different Broadcast id's
作为pending intents
. 像这样的东西:使用系统时间应该是您触发的每个待处理目标的唯一标识符 .
来自the docs:
多个
AlarmManagers
无法解决您的问题 . 如果它们有多个不同的警报(不同的时间和不同的天数),则每次启动上一个警报时都需要在BroadcastReceiver
内设置警报 .您还需要按住RECEIVE_BOOT_COMPLETED并使用
BroadcastReceiver
来接收启动,这样如果手机重新启动,您可以重新安排警报 .要设置多个警报,您需要每次定义
Intent
,以便与其他警报区分开来 . 我发现这样做最简单的方法是设置Intent
的data
字段,如下所示:你的其余代码@ Hassy31原样很好并保持不变 .
请注意,根据文档,
PendingIntent.getBroadcast()
方法中的requestCode
参数(由@parag建议)未使用,因此这不是正确的方法 .为pendingIntent设置Broadcast
id
Set multiple alarms using android alarm manager