Also im Grunde habe ich diesen Code, Zeit gibt 24 Stunden Zeit und wiederholt den Alarm täglich.AlarmManager feuern Alarm nach der Zeit, die es am selben Tag festgelegt wurde, setRepeating
public setAlarm(String time, Context context){
String[] strTime;
strTime = time.split(":");
int hour, min, sec;
//set when to alarm
hour = Integer.valueOf(strTime[0]);
min = Integer.valueOf(strTime[1]);
sec = 0;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, min);
cal.set(Calendar.SECOND, sec);
//Create a new PendingIntent and add it to the AlarmManager
Intent intent = new Intent(context, AlarmReceiverActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 19248, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Activity.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Wie auch immer, das Problem ist, wenn ich den Wecker 9 Uhr morgens stelle, während die Zeit 9:10 Uhr ist, wird der Wecker gehen. Warum? Ich möchte es nicht alarmieren, wenn es über die Systemzeit hinaus eingestellt ist. Ex. stellen Sie den Alarm um 9 Uhr morgens, während die Systemzeit 09.10
AlarmManager.INTERVAL_DAY + 1 - Warum fügen Sie +1 hinzu? –
Weil "Wenn ein Alarm verzögert wird (durch Systemruhezustand, z. B. für Alarmtypen ohne _WAKEUP), wird eine übersprungene Wiederholung so schnell wie möglich geliefert. Danach werden zukünftige Alarme gemäß dem ursprünglichen Zeitplan zugestellt nicht mit der Zeit driften.Wenn Sie z. B. für jede Stunde einen wiederkehrenden Alarm eingestellt haben, aber das Telefon von 7:45 bis 8:45 Uhr geschlafen hat, wird ein Alarm gesendet, sobald das Telefon erwacht und der nächste Alarm gesendet wird 9:00 Uhr. "Der Alarm wird also ausgelöst, wenn Sie ihn am selben Tag einstellen – FeanDoe