Если это будет всегда , повторяемое между 6:00 и 18:00 ежедневно, тогда вам не нужна база данных.Также убедитесь, что вы запланировали тревогу на IntentService
или BroadcastReceiver
в вашем PendingIntent
.В onReceive
получите текущий час, проверьте, что он между 6 утра и 6 вечера, если есть, пожарная сигнализация.Если нет, отмените текущий аварийный сигнал (экономия батареи), запланируйте следующий аварийный сигнал на 6 утра.А пока напишите алгоритм, который проверяет текущий день.Подробности я оставил в TODO в примере кода.
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour >= 6 && hour <= 18){
//fire alarm
} else if (hour > 19 || hour < 6) {
Intent intent1 = new Intent(context, cls);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, DAILY_REMINDER_REQUEST_CODE, intent1, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntent.cancel();
calendar.set(Calendar.HOUR_OF_DAY, 6);
//TODO: Write an algorithm that checks if current day + 1 will be still in the same month,
//TODO: what I mean if it is out of range of month, e.g 30th of Febraury, then get current month and add 1
//TODO: If there is currently 31st December, change day to be equal of 1, get current year, add 1 etc.
int currentday = calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, currentday + 1);
Intent intent1 = new Intent(context, cls);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, DAILY_REMINDER_REQUEST_CODE, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,setcalendar.getTimeInMillis(), AlarmManager.INTERVAL_HOUR, pendingIntent);
}