在警报管理器Android中设置时间 - 警报立即触发

时间:2011-08-17 06:36:59

标签: android calendar alarmmanager

这里我尝试使用AlarmManger类设置闹钟。它对我来说工作正常但是当我在时间之后设置闹钟时间或从时间选择器开始时间时,当我保存该闹钟时它会立即启动。闹钟。我需要报警才能设定时间。 以下是我的代码正在运行,但在我保存时立即启动警报。

我只用时间选择器设定时间。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

如果我采取以下代码警报不起作用..

 Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, mHour);
calendar.set(Calendar.MINUTE, mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

如果我改变了工作,请帮助我。提前谢谢...

2 个答案:

答案 0 :(得分:4)

第二个代码通常适用于过时的警报。

请记住: 如果您设置了HOUR和MINUTE,则将其设置为当天,例如HOUR = 1和MINUTE = 30表示您在01:30 AM设置闹钟。 如果它结束了,你现在可能会收到警报。

如果您希望将来1:30创建闹钟,请使用 calendar.add(..,..)方法。

答案 1 :(得分:0)

我不确定你要用这条线做什么:

calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);

但我很确定它不会做你想要的。这会将日历设置为小时和时间。你在公元1年3月5日选择的那一分钟。当你将它转换为毫秒时,你会得到0,因为那是在最早的日期之前,可以用毫秒表示。

此行中还有一个与Calendar API相关的问题:

calendar.set(Calendar.HOUR, mHour);

在这里,您的问题是Calendar.HOUR字段是指12小时表示法中的小时,而您的mHour可能是使用24小时表示法(否则您还需要一个AM / PM字段来保存完整一天的价值)。你想要Calendar.HOUR_OF_DAY。