Temel olarak bu koda sahibim, zaman 24 saat döner ve alarmı her gün tekrarlar. Alarmın 9 am ayarladığınızda zaman 09:10 ikenAlarmManager, aynı gün ayarlandığı zamandan beri alarmı tetikliyor, 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);
}
Neyse, sorun Alarmı çıkmak vardır. Niye ya? Sistem zamanını geçtiyse alarm vermemesini istiyorum. Ör. sistem zamanı 09:10
AlarmManager.INTERVAL_DAY + 1 - Neden +1 ekliyorsun? –
Çünkü "Bir alarm ertelenirse (örneğin, sistem uyku ile _WAKEUP alarm türleri için), atlanan bir tekrar mümkün olan en kısa sürede teslim edilir. Bundan sonra, gelecekteki alarmlar orijinal programa göre teslim edilir. zamanla sürüklenmez.Örneğin, her saat başı en üstte bir alarm ayarladıysanız ancak telefon 7:45 ile 8:45 arasında uykudaysa, telefon uyanır uyanmaz alarm verilir, ardından bir sonraki alarm gönderilir. 09:00. "Aynı gün ayarladığınızda alarm çalar. – FeanDoe