Il suffit de vérifier les résultats du sélecteur de temps avant de régler l'alarme. Je ne sais pas exactement comment vous réglez votre alarme, ni même quel type d'alarme vous utilisez, mais je suppose qu'avec un temps en millisecondes, vous pouvez le calculer.
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Calendar now = Calendar.getInstance();
Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.HOUR_OF_DAY, hourOfDay);
alarm.set(Calendar.MINUTE, minute);
long alarmMillis = alarm.getTimeInMillis();
if (alarm.before(now)) alarmMillis+= 86400000L; //Add 1 day if time selected before now
setAlarm(alarmMillis);
}
public void setAlarm(long millis) {
/** Set your alarm here */
}
Il y a beaucoup d'autres façons de faire cela, mais je trouve que la classe Calendrier est généralement bonne pour la manipulation du temps pour les débutants. J'espère que cela vous aidera.
EDIT : Si l'heure d'été est un problème, une petite modification résoudra le problème :
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Calendar now = Calendar.getInstance();
Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.HOUR_OF_DAY, hourOfDay);
alarm.set(Calendar.MINUTE, minute);
if (alarm.before(now)) alarm.add(Calendar.DAY_OF_MONTH, 1); //Add 1 day if time selected before now
setAlarm(alarm.getTimeInMillis());
}
Vous devez vous assurer que le fuseau horaire est correctement défini. Le code ci-dessus utilisera le fuseau horaire par défaut qui est défini par le système en fonction des paramètres de votre localité Android. Utilisez Calendar.getInstance(TimeZone zone) pour obtenir l'objet Calendrier dans un fuseau horaire spécifique.