проблема в установке нескольких будильников Android?

Я пытаюсь установить несколько будильников с помощью широковещательного приемника. Я устанавливаю повтор каждые 1 минуту и ​​30 секунд для двух сигналов тревоги. Но когда я получаю сигналы тревоги, оба сигнала повторяются одновременно.

Я делаю это так:

if(repeat.equals("No Repeat")){
                    bcr.CancelAlarm(getApplicationContext());
                }
                else if(repeat.equals("After 10 Minutes")) {
                    bcr.TenMintAlarm(getApplicationContext(), hour, minute, dueDate,task_note,Tasks_ID);
                }
                else if(repeat.equals("After 15 Minutes")){
                    bcr.FifteenMintAlarm(getApplicationContext(), hour, minute, dueDate,task_note,Tasks_ID);
                }
                else if(repeat.equals("After n Minutes")){
                    bcr.nMintAlarm(getApplicationContext(), hour, minute, dueDate,task_note,Tasks_ID);
                }

ВЕЩАТЕЛЬНЫЙ ПРИЕМНИК:

public void CancelAlarm(Context context)
{
    Intent intent = new Intent(context, AlarmReceiver.class);
    PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.cancel(sender);
}
public void TenMintAlarm(Context context,int hour,int minutes, String duedate,String task_note,int task_id) 
{
    AlarmManager Alarm1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.putExtra("NOTE", note);
    intent.putExtra("ID", task_id);
    int mUniqID = task_id+2;
    PendingIntent recurringAlarm = PendingIntent.getBroadcast(context, mUniqID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    System.out.println("mUniqID-----" +mUniqID);
    Alarm1.setRepeating(AlarmManager.RTC_WAKEUP, _alarm, 1000 * 60, recurringAlarm);
}
public void FifteenMintAlarm(Context context, int hour,int minutes, String duedate, String task_note, int task_id)
{
    AlarmManager Alarm2 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, AlarmReceiver.class);
    i.putExtra("NOTE", note);
    i.putExtra("ID", task_id);
    int uniqID = task_id+2;
    System.out.println("mUniqID-----" +uniqID);
    PendingIntent Alarm = PendingIntent.getBroadcast(context, uniqID, i, PendingIntent.FLAG_UPDATE_CURRENT);
    Alarm2.setRepeating(AlarmManager.RTC_WAKEUP, _alarm, 1000 * 30, Alarm);
}

Но при получении будильника он повторяется одновременно, вместо этого я хочу, чтобы один будильник повторялся через 1 минуту, а второй - через 30 секунд. Любое предложение может быть полезным. Спасибо.


person user2822311    schedule 29.10.2013    source источник
comment
Вы уверены, что бот вызвал тревогу?   -  person Akarsh M    schedule 29.10.2013
comment
Я боюсь, что оба ваших идентификатора будильника в PendingIntent всегда одинаковы, поэтому другой будильник перезаписывается. Сначала проверьте, отличаются ли идентификаторы, если вы хотите иметь несколько сигналов тревоги.   -  person Andrew T.    schedule 29.10.2013
comment
@AM, Да, оба будильника я получаю вовремя, но проблема в том, что оба они повторяются в одно и то же время, но у меня есть два разных значения: одно - четыре 30 секунд, а второе - 1 минута. но оба повторяются через 1 минуту.   -  person user2822311    schedule 30.10.2013
comment
@antimo Я передал идентификатор задачи, поэтому идентификатор задачи всегда будет другим в ожидании намерения для буксировки другого сигнала тревоги. Я вижу, что оба получают разные идентификаторы.   -  person user2822311    schedule 30.10.2013


Ответы (2)


В соответствии с вашими блоками else-if будет установлен только один сигнал тревоги в зависимости от указанного вами условия. Если вы хотите установить 2 будильника, вы должны поместить их в один и тот же блок или что-то в этом роде.

person Anup Cowkur    schedule 29.10.2013
comment
не могли бы вы сообщить мне, как я могу это преодолеть? - person user2822311; 30.10.2013
comment
Я получаю сигнал тревоги кабины, но он повторяется в то же время. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. - person user2822311; 30.10.2013

Вам нужно использовать разные идентификаторы для pending intent. mUniqID и uniqID, которые вы использовали в обеих функциях, равны, заставьте BroadcastReciever думать, что они такие же, как и другие, чтобы они срабатывали одновременно. Просто установите для них разные числа.

public void TenMintAlarm(Context context,int hour,int minutes, String duedate,String task_note,int task_id) 
{
    AlarmManager Alarm1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.putExtra("NOTE", note);
    intent.putExtra("ID", task_id);
    int mUniqID = 20;//change in here
    PendingIntent recurringAlarm = PendingIntent.getBroadcast(context, mUniqID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    System.out.println("mUniqID-----" +mUniqID);
    Alarm1.setRepeating(AlarmManager.RTC_WAKEUP, _alarm, 1000 * 60, recurringAlarm);
}
public void FifteenMintAlarm(Context context, int hour,int minutes, String duedate, String task_note, int task_id)
{
    AlarmManager Alarm2 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, AlarmReceiver.class);
    i.putExtra("NOTE", note);
    i.putExtra("ID", task_id);
    int uniqID = 10;//change in here
    System.out.println("mUniqID-----" +uniqID);
    PendingIntent Alarm = PendingIntent.getBroadcast(context, uniqID, i, PendingIntent.FLAG_UPDATE_CURRENT);
    Alarm2.setRepeating(AlarmManager.RTC_WAKEUP, _alarm, 1000 * 30, Alarm); 
}
person Mehran Zamani    schedule 14.03.2017