im trying to build an alarm within my app with codes like below but it
does not work with a loop having multiple days.
it seems like setRepeatingAlarm can not be fired with multiple
triggerAtTime values. it only works to repeat the alarm with one
TiggeratTime and an interval time
AlarmManager am[] = new AlarmManager[6] ;
PendingIntent mAlarmSender[] = new PendingIntent[6] ;
cnt = 6 /* Mon to Sun* or if Mon or any single day only/
mDays[i] = can be from Mon to Sun or just Mon(one day only)
for (int i= 0; i < cnt ; i++)
{
am[i] = (AlarmManager)getSystemService(ALARM_SERVICE);
firstTime = setAlarmTime(mDays[i], mHour, mMinute,
sAmPm) ;
am[i].setRepeating(AlarmManager.RTC_WAKEUP, firstTime, intrvl,
mAlarmSender[i]);
}
private static long setAlarmTime(String mDay, int mHour, int mMinute,
String sAmPm) {
/* Compare the current calendar time with the time set by user */
String calAmPm ;
int mDayNumber = 0 ;
int hrDiff = 0 ;
int minDiff = 0 ;
mDayNumber = convertToDayNumber(mDay) ;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int mDy = calendar.get(Calendar.DAY_OF_WEEK);
int mHr = calendar.get(Calendar.HOUR);
int mMin = calendar.get(Calendar.MINUTE);
int mAP = calendar.get(Calendar.AM_PM);
if ( mAP == 0 )
calAmPm = "AM" ;
else
calAmPm = "PM" ;
if (sAmPm.compareTo(calAmPm) == 0)
{
if (mHour > mHr)
/*user entered alarm time is 9:00PM vs phone time of
5:00PM */
hrDiff = mHour - mHr ; //4
else if (mHour < mHr)
/* 9:00PM 11:00PM*/
hrDiff = 24 - (mHr - mHour) ;
else
hrDiff = 0 ;
if (mMinute > mMin)
/* 9:30PM vs 5:15PM */
minDiff = mMinute - mMin ; //15
else if (mMinute < mMin)
/* 9:10PM 11:15PM */
minDiff = 60 - (mMin - mMinute) ; //55
else
minDiff = 0 ;
}
else if (sAmPm.compareTo("PM") == 0 && calAmPm.compareTo("AM")
== 0 ) {
/* 9:00PM vs 5:00AM 9:00PM 11:00AM*/
if (mHour > mHr)
hrDiff = 12 + (mHour - mHr) ; //16
else if (mHour < mHr)
hrDiff = 12 - (mHr - mHour) ; //10
else
hrDiff = 0 ;
/* 9:30PM vs 5:15PM 9:10PM 11:15PM*/
if (mMinute > mMin)
minDiff = mMinute - mMin ; //15
else if (mMinute < mMin)
minDiff = 60 - (mMin - mMinute) ; //55
else
minDiff = 0 ;
}
else if (sAmPm.compareTo("AM") == 0 && calAmPm.compareTo("PM")
== 0 ) {
/* 9:00AM vs 5:00PM 9:00AM 11:00PM*/
if (mHour > mHr)
hrDiff = 12 + (mHour - mHr) ; //16
else if (mHour < mHr)
hrDiff = 12 - (mHr - mHour) ; //10
else
hrDiff = 0 ;
/* 9:30PM vs 5:15PM 9:10PM 11:15PM*/
if (mMinute > mMin)
minDiff = mMinute - mMin ; //15
else if (mMinute < mMin)
minDiff = 60 - (mMin - mMinute) ; //55
else
minDiff = 0 ;
}
/* this add means were adding the hour and min diff of the user
entered time with the current time */
if (hrDiff == 1 && minDiff > 0)
calendar.add(Calendar.HOUR,0);
else
calendar.add(Calendar.HOUR,hrDiff);
calendar.add(Calendar.MINUTE,minDiff);
calendar.add(Calendar.DAY_OF_WEEK,getDayDiff(mDayNumber, mDy));
/* since we have added new values for day, hours and min needed
to our current calendar time, get its long
value */
return calendar.getTimeInMillis() ;
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---