Я работаю над приложением домашней аптеки, в котором есть несколько участников для каждого отдельного пользователя, это значит (одно приложение для всех членов семьи), поэтому у меня есть таблица пользователей, таблица участников, таблица лекарств и таблица member_drugs.
таблица элементов имеет столбцы:
id
, user_id
, name
, age
, ... и т.д ...
таблица member_drugs содержит столбцы:
id
, member_id
, drug_id
, drug dose
, drug dose repetition
(т. Е. Сколько часов между первой дозой и последующими дозами в течение одного дня - может быть 6 часов), first time dose
и т. Д....
теперь мне нужно отправлять уведомления для каждого напоминания дозы (все повторения в определенное время).
, например:
препарат x для члена y иПовторение дозы препарата составляет 3 часа, а первый раз для препарата - 12 часов утра, поэтому: мне нужно отправить уведомление через: 1 - первый раз через: 12 am
.и повторения в:
2- 3 am
.
3- 6 am
.
4- 9 am
.
5-.... и т.д ..
моя проблема в том, что уведомление приходит только в первый раз.
Я пробовал в этом коде, но он не работает.Я не знаю, что я пропустил
это мой метод обслуживания уведомлений:
@Override
protected void onHandleWork(Intent intent) {
Date date = new Date();
toda = dateFormat.format(date);
today = dateFormat.parse(toda, new ParsePosition(0));
java.util.Date date1 = new java.util.Date();
String current = sdf.format(date1);
Date now1 = sdf.parse(current, new ParsePosition(0));
String now = sdf.format(now1);
arrayList1 = setTimeAlarm();
if (arrayList1 != null) {
if (arrayList1.size() > 0) {
for (DrugAlert d : arrayList1) {
Log.d(getClass().getSimpleName(), "heeeeeeeeeeeeer");
String start = d.get_start_date();
Date d1 = dateFormat.parse(start, new ParsePosition(0));
String end = d.get_end_date();
Date d2 = dateFormat.parse(end, new ParsePosition(0));
String firstTime = d.getAlert_time();
Date t1 = sdf.parse(firstTime, new ParsePosition(0));
String t = sdf.format(t1);
int repeat = d.getDose_r();
Calendar cal = Calendar.getInstance(); // creates calendar
cal.setTime(t1); // sets calendar time/date
if ((d2.after(today) || d2.equals(today)) && (d1.equals(today) || today.after(d1))) {
for (int i = repeat; i<=24; i = i +repeat){
// i = repeat;
cal.add(Calendar.HOUR_OF_DAY,i); // adds one hour if repeat == 1
cal.getTime(); // returns new date object, one hour in the future
Date repDose1 = cal.getTime();
String repDose = sdf.format(repDose1);
if (t.equals(now) || repDose.equals(now) ) {
memName = d.getMember_name();
drugName = d.getDrug_name();
courseId = d.get__id();
dose = d.getDose_q();
Log.d(getClass().getSimpleName(), "onHandleIntent, started handling a notification event");
try {
processStartNotification();
NOTIFICATION_ID = NOTIFICATION_ID +1;
String action = intent.getAction();
if (ACTION_START.equals(action)) {
processStartNotification();
}
} finally {
WakefulBroadcastReceiver.completeWakefulIntent(intent);
}
}
}
}
}
}
}
}