Хорошо, позвольте мне изменить вопрос и сделать его намного проще.Надеюсь, вы сможете найти мне решение для этого.Обе тревоги должны быть запланированы одновременно, чего здесь не происходит.Я даже использую уникальный код запроса для ожидающего намерения. ПОМОГИТЕ мне, пожалуйста .....
// При нажатии Слушатель
private OnClickListener mOneShotListener = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, 0);
//I even tried sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, PendinIntent.FLAG_UPDATE_CURRENT);
//the alarm to go off 30 seconds from now.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 30);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
//adds 2 minutes to the time
calendar.add(Calendar.MINUTE, 2);
sender = PendingIntent.getBroadcast(AlarmController.this,1, intent,0);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender2);
}
};
СТАРЫЙ Вопрос:
Я хочу установить две тревоги одновременно для выполнения двух разных операций.
Например.Пользователь устанавливает будильник на 2 часа и устанавливает продолжительность на 15 минут.Первый аварийный сигнал должен срабатывать в 2 часа, который выполняет функцию 1, а второй аварийный сигнал должен срабатывать в 2:15, поскольку пользователь указал продолжительность в 15 минут, которая выполняет функцию 2.Эту операцию следует повторять каждый день в 2 часа, если пользователь не изменяет время.
Я вызываю обе эти функции по нажатию кнопки:
Событие по нажатию
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
..........
..........
new ReminderManager(this).setReminder(mRowId, mCalendar);
new ReminderManager(this).wakeReminder(mRowId, mCalendar, duration);
}
}
setReminder содержит
// устанавливает будильник на 2 часа
public void setReminder(Long taskId, Calendar when, String duration){
Intent i = new Intent(mContext, OnAlarmReceiver.class);
i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId);
PendingIntent pi = PendingIntent.getBroadcast(mContext,(int)System.currentTimeMillis(), i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
wakeReminder содержит
// добавляет длительность, т.е. 15 минут
public void wakeReminder(Long taskId, Calendar when, String duration){
Intent i = new Intent(mContext, OnAlarmReceiverWake.class);
i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId);
Long d = Long.parseLong(duration);
Long mins = d*60*100;
Long milli = when.getTimeInMillis() + mins;
PendingIntent pi = PendingIntent.getBroadcast(mContext, (int)System.currentTimeMillis(), i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, milli, pi);
}
Я заметил, что всякий раз, когда mAlarmManager.set();
выполняется успешно, LogCat
показывает уведомление, например
"enqueueToast pkg=com.jellboi.android.togglemode callback=android.app ITransientNotification$stub$proxy@43c0c5f8 duration=0"
но когда я устанавливаю обе тревоги одновременно, уведомление не отображается при выполнении mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
, а уведомление отображается при выполнении mAlarmManager.set(AlarmManager.RTC_WAKEUP, milli, pi);
.Кроме того, уведомление установлено на исходное время, т.е. на 2 часа, а не после добавления 15 минут к его продолжительности.
Пожалуйста, помогите, я пробовал много способов вызова этой функции в разных местах, например, после 1-го будильника.уволен, но все напрасно.