Nella mia domanda ho una funzionalità per far scattare l'allarme in 4 senerios:Ripetendo allarme per giorni specifici della settimana Android
- solo una volta per una data e ora utente scelto
- giornaliere per tempo scelto
- settimanali in base alla data e l'ora scelti
- scelto dall'utente giorni personalizzati della settimana
ho implementare con successo i primi 3 senerios utilizzando il seguente:
Solo una volta:
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);
Per programmazione giornaliera:
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);
Per la programmazione settimanale (come da data di sistema):
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);
Per i giorni della settimana personalizzati scelti dall'utente (ad es. solo per lunedì e venerdì, ripetuti settimanalmente) Sto usando lo stesso codice che ho usato per la programmazione settimanale per iterazione. Ma non funziona per lunedì (che è fissato prima di venerdì) e lavora per venerdì. Inoltre, non attiva l'allarme per oggi se oggi (data del sistema) è un lunedì o un venerdì.
Quindi, come posso implementare la pianificazione settimanale degli allarmi per i giorni della settimana personalizzati?
Non so molto su questo, ma è possibile avviare/arrestare gli allarmi all'interno dell'Intento che si sta attivando? In tal caso, dopo l'attivazione dell'allarme, ad esempio lunedì, puoi interrompere l'allarme e avviare quello del venerdì? –