Установите Повтор дней недели тревоги в android

Может ли кто-нибудь дать хорошую логику для заданного повторения дней недели тревоги? Я сделал еженедельную тревогу, используя

alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt); alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt); alarmCalendar.set(Calendar.SECOND, 0); alarmCalendar.set(Calendar.AM_PM, amorpm); Long alarmTime = alarmCalendar.getTimeInMillis(); Intent intent = new Intent(Alarm.this, AlarmReciever.class); intent.putExtra("keyValue", key); PendingIntent pi = PendingIntent.getBroadcast(Alarm.this, key, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 7*1440*60000 , pi); 

Тревожный сигнал тревоги по времени и через 7 дней он автоматически запускается в это время.

Но моим требованием я хочу выбрать дни, а не только 7 дней.

Что-то вроде каждого понедельника, вторника, четверга в 9:00 – Тревога должна срабатывать автоматически. Как мне это сделать в setRepeating.

Может ли кто-нибудь помочь мне с этим?

Благодаря!

Solutions Collecting From Web of "Установите Повтор дней недели тревоги в android"

Эти вопросы говорят о том же, что и вы. Эти ответы будут полезны:

Вам просто нужно указать день, чтобы начать его, а затем повторять его каждые 7 дней. В ответах на заданные вопросы указано несколько способов:

Как я могу получить повторный сигнал тревоги в течение недельных дней с помощью диспетчера аварийных сигналов?

Уведомление Android в определенный будний день отключается напрямую

Как повторить день недели тревоги в android

Обновить:

В своем комментарии вы сказали

Как установить часть triggerAtMillis в setRepeating. Например, сегодня – вторник, я выбираю еженедельный понедельник, среду, пятницу. – Что я ставлю на среду?

То, что я понял, что, если сегодня вторник, как настроить будильник, можно сказать, что среда повторяется, не так ли? Прежде всего, вы можете использовать mulltiple id для установки аварийных сигналов для каждого дня отдельно.

Затем вы можете добавить alarmCalendar.set(Calendar.DAY_OF_WEEK, week); На ваш существующий код. На основе недельного дня (с 1-7) он повторяется на этот день. Вы можете передать его в функцию как параметр. Подобно:

  setAlarm(2); //set the alarm for this day of the week public void setAlarm(int dayOfWeek) { // Add this day of the week line to your existing code alarmCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt); alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt); alarmCalendar.set(Calendar.SECOND, 0); alarmCalendar.set(Calendar.AM_PM, amorpm); Long alarmTime = alarmCalendar.getTimeInMillis(); //Also change the time to 24 hours. am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 24 * 60 * 60 * 1000 , pi); } 

Я привел пример из одного из вышеуказанных вопросов. Надеюсь, теперь это станет более ясным.

 Intent intent1 = new Intent(getApplicationContext(), NotificationReceiver.class); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 1, intent1, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager1 = (AlarmManager)getSystemService(ALARM_SERVICE); java.util.Calendar calendar1 = java.util.Calendar.getInstance(); calendar1.set(java.util.Calendar.DAY_OF_WEEK, Calendar.MONDAY); calendar1.set(java.util.Calendar.HOUR_OF_DAY, 22); calendar1.set(java.util.Calendar.MINUTE, 8); calendar1.set(java.util.Calendar.SECOND, 0); alarmManager1.setExact(AlarmManager.RTC, calendar1.getTimeInMillis(), pendingIntent1); 
 if (Monday.isChecked()) { setalarm(2); } else if (Tuesday.isChecked()) { setalarm(3); } else if (Wednesday.isChecked()) { setalarm(4); } else if (Thursday.isChecked()) { setalarm(5); } else if (Friday.isChecked()) { setalarm(6); } else if (Saturday.isChecked()) { setalarm(7); } else if (Sunday.isChecked()) { setalarm(1); } public void setalarm(int weekno) { cal.set(Calendar.DAY_OF_WEEK, weekno); cal.set(Calendar.MINUTE, min); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1 * 60 * 60 * 1000, pendingIntent); }