これは基本的に私はこのコードを持っています。時間は24時間戻り、毎日アラームを繰り返します。AlarmManagerは、同じ日に設定された時刻より前にアラームを発します。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);
}
とにかく、問題は、午前9時10分にアラームを午前9時に設定するとアラームが消えてしまうことです。どうして?私はそれがシステム時間を過ぎて設定されている場合、それが警戒しないようにします。 Ex。システム時刻は9:10
AlarmManager.INTERVAL_DAY +1 - なぜあなたは+1を追加しますか? –
「アラームが遅れた場合(システムスリープ、たとえば非_WAKEUPアラームタイプの場合)、できるだけ早くスキップされたリピートが配信されます。その後、元のスケジュールに従って将来のアラームが配信されます。時間の経過とともにドリフトすることはありません。たとえば、1時間ごとに定期的にアラームを設定していても、電話機が7時45分から8時45分までスリープしていた場合は、電話が覚醒するとすぐにアラームが送信され、次のアラームが送信されます9:00。 "それで、あなたが同じ日にそれを設定すると、アラームが発せられます – FeanDoe