2011-08-17 78 views
0

这里我试图通过使用AlarmManger类设置闹钟。它与我工作正常,但当我设置闹钟时间后小时或分钟时间选择器,它会立即启动时,我保存该报警。闹钟。我需要警报熄灭,直到我设定时间。 下面是我的代码正在工作,但我保存时立即开始报警。设置闹钟管理器Android中的时间 - 立即触发闹钟

我只在时间选择器上设置时间。

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); 

帮助我,我应该在改变提前上班properly.Thanks ...

回答

4

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

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

当你想在将来用1:30创建闹钟时,则使用calendar.add(..,..)方法。

+0

谢谢为我工作.. –

0

我不知道你想用这条线做什么:

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

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

您还可以在此行相关的问题不同的日历API:

calendar.set(Calendar.HOUR, mHour); 

在这里,你的问题是,Calendar.HOUR场是指小时12小时制,而你的mHour大概是使用24小时制表示法(否则,您还需要一个AM/PM字段来存放一整天的时间)。您需要改为Calendar.HOUR_OF_DAY。