W mojej aplikacji mam funkcjonalność wywoła alarm w 4 senerios:Powtarzanie alarmu dla poszczególnych dni tygodnia android
- tylko raz na datę i czas wybrany przez użytkownika
- codziennie w wybranym czasie
- tygodniowe zgodnie z wybraną datą i godziną
- Użytkownik wybiera niestandardowe dni tygodnia
pomyślnie wdrożyć pierwsze 3 senerios za pomocą następująco:
tylko raz
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.parseInt(date[0]));
calendar.set(Calendar.MONTH, (Integer.parseInt(date[1])) - 1);
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date[2]));
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
calendar.set(Calendar.SECOND, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Do codziennego harmonogramu:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
calendar.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Dla tygodniowego harmonogramu (wg daty systemowej):
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
calendar.set(Calendar.SECOND, 0);
//long interval = calendar.getTimeInMillis() + 604800000L;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent);
Dla niestandardowych dni tygodnia wybranych przez użytkownika (np. tylko na poniedziałek i piątek, powtarzane co tydzień) Używam tego samego kodu, którego używałem do cotygodniowego planowania przez iterację. Ale nie działa na poniedziałek (który jest ustawiony przed piątkiem) i pracuje w piątek. Nie wywoła też alarmu na dziś, jeśli dzisiaj (data systemowa) jest poniedziałek lub piątek.
Jak zatem wdrożyć cotygodniowe harmonogramy alarmów dla niestandardowych dni tygodnia?
Nie wiem zbyt wiele na ten temat, ale czy można uruchamiać/zatrzymywać alarmy w ramach działania, które uruchamiasz? Jeśli tak, to po uruchomieniu alarmu np. W poniedziałek, możesz zatrzymać ten alarm i rozpocząć piątek? –