2011-08-28 54 views
2

試圖設置一週中某些日子的鬧鐘,但目前困惑,爲什麼這個鬧鐘立即被解僱,無論我通過什麼樣的時間和分鐘...(我知道星期幾東西是錯的,只是還沒到那個呢!)爲什麼我的鬧鐘會馬上熄滅? (android)

public void setReminder(int hr, int min, int day) 
{ 
    Intent intent = new Intent(mContext, AlarmReceiver.class); 

    PendingIntent sender = PendingIntent.getBroadcast(mContext, alarmId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, hr); 
    calendar.set(Calendar.MINUTE, min); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.setFirstDayOfWeek(Calendar.SUNDAY); 
    calendar.set(Calendar.DAY_OF_WEEK, day); 


    // set the alarm to repeat every week at the same time 
    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, sender); 
} 

有什麼想法嗎?

回答

3

如果日曆calendar.before(Calendar.getInstance()) == true(這意味着你要設置報警,在過去開始,它會立即觸發

在這種情況下,你可以做到以下幾點:

long start = calendar.getTimeMillis(); 
if (calendar.before(Calender.getInstance()) { 
    start += AlarmManager.INTERVAL_DAY * 7; 
} 
// set alarm with start time 

docs

如果過去發生的時間,報警將立即觸發,報警計數取決於過去觸發時間相對於重複的距離時間間隔。

+0

感謝您的尼基塔 - 這看起來像一個重要的檢查運行在我的代碼。我仍然不明白,爲什麼如果我通過未來的時間,警報會立刻被解僱! –

+0

可能是那一天東西搞砸了嗎?我必須刪除它,看看它是否有所作爲! –

+0

我已經添加了該代碼,但它仍然立即啓動。任何想法? –