La domanda di Alarm Manager dice cheAndroid impediscono di attivazione immediata del servizio di allarme se il tempo lo hanno fatto scattare per il giorno
Se il tempo di attivazione dichiarato è nel passato, l'allarme verrà attivato immediatamente.
Sono di fronte a questo problema nella mia domanda. Ecco il mio codice gestore allarmi:
Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class);
pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
C'è qualche soluzione per questo problema?
----- ------ EDIT
Ho scritto il codice per valutare se il tempo impostato per l'allarme è prima dell'ora corrente. Ecco la parte di sopra con le modifiche corrispondenti:
Calendar calendar = Calendar.getInstance();
long currentTime = calendar.getTimeInMillis();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
long setTime = calendar.getTimeInMillis();
Timestamp setTimestamp = new Timestamp(setTime);
Timestamp currentTimestamp = new Timestamp(currentTime);
if (setTimestamp.after(currentTimestamp))
{
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
}
else
{
}
Cosa devo il alarmManager
al caso setTimestamp
è prima currentTimestamp
?