2011-08-17 206 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。