Reputation: 861
Trying to set alarms for certain days of the week, but currently puzzled as to why this alarm is getting fired immediately, no matter what I pass in as hr and min... (I know the day of the week stuff is wrong, just haven't got to that yet!)
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);
}
any ideas?
Upvotes: 2
Views: 1165
Reputation: 15434
If calendar calendar.before(Calendar.getInstance()) == true
(it means your are setting alarm to start in the past, it will fire immediately.
In such situation you can do following:
long start = calendar.getTimeMillis();
if (calendar.before(Calender.getInstance()) {
start += AlarmManager.INTERVAL_DAY * 7;
}
// set alarm with start time
From docs:
If the time occurs in the past, the alarm will be triggered immediately, with an alarm count depending on how far in the past the trigger time is relative to the repeat interval.
Upvotes: 3