Repeat Alarm once in a week in android

13,607

Solution 1

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY, pendingIntent);

In this line you set the start time to the user selected day, but then set the interval to INTERVAL_DAY.

You should use INTERVAL_DAY * 7 to make sure it repeats on a weekly basis instead:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY * 7, pendingIntent);

Solution 2

Is your alarm getting triggered everyday or every hour ?

I am supposing your in_Date is an indicator to choose daily alarm or for specific days .

My idea-> set the alarm for all days, check your day condition in the alarm receiver .

Share:
13,607
Supreet
Author by

Supreet

Updated on June 04, 2022

Comments

  • Supreet
    Supreet almost 2 years

    I am trying to develop alarm functionality in a my app which runs on a week days specified by user on fixed time. Problem here is that my scheduler running for all days instead of running on specified day . here is the code i wrote for this please help to fix this

    Calendar calNow = Calendar.getInstance();
                    SimpleDateFormat simpDate;
                    simpDate = new SimpleDateFormat("kk:mm:ss");
                    if(in_Date==1)
                    {
                        calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        calNow.set(Calendar.MINUTE, minute);
                        calNow.set(Calendar.SECOND, 0);
                        calNow.set(Calendar.MILLISECOND, 0);
                    }
                else if(in_Date==2)
                    {
                        calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        calNow.set(Calendar.MINUTE, minute);
                        calNow.set(Calendar.SECOND, 0);
                        calNow.set(Calendar.MILLISECOND, 0);
                        calNow.set(Calendar.DAY_OF_WEEK,in_SelectedDay);
                    }
                    etTime.setText(simpDate.format(calNow.getTime()));
                    Seconds=calNow.getTimeInMillis();
    
    private void setAlarm(){
    
        //etTime.setText(simpDate.format(calNow.getTime()));
    
        Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    
         if(in_Date==1)
         {
    
           alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,alarmManager.INTERVAL_DAY,pendingIntent);
         }
        else if(in_Date==2)
        {
    
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,1 * 60 * 60 * 1000,pendingIntent);
        }
    
    }