Менеджер тревог не будет точно повторять тревогу в нужное время. Я схожу с ума по поводу последних двух недель - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь установить несколько будильников одновременно с одним широковещательным приемником. используя разные коды запросов. мои сигналы тревоги устанавливаются, но не срабатывают в правильное время, иногда никогда не срабатывают. До того, как я попробовал setInexcatRepeating, он имеет такие же результаты. setExact срабатывает один раз.

spref = new Spref();
        saat1 = spref.getValue1(conSaat1);
        saat2 = spref.getValue2(conSaat2);
        saat3 = spref.getValue3(conSaat3);
        saat4 = spref.getValue4(conSaat4);
        saat5 = spref.getValue5(conSaat5);
        saat6 = spref.getValue6(conSaat6);
        saat7 = spref.getValue7(conSaat7);
        saat8 = spref.getValue8(conSaat8);

        String[] saatDizi = {
                saat1,
                saat2,
                saat3,
                saat4,
                saat5,
                saat6,
                saat7,
                saat8,
        };

        int i = 0;
        for (; i<saatDizi.length;i++){
            if (switchBildirim.isChecked()) {
                int saat;
                int dakika;
                if (saatDizi[i].length() > 0) {
                    saatDakika = saatDizi[i];
                    String[] dizi = saatDakika.split(":");
                    saat = Integer.parseInt(dizi[0]);
                    dakika = Integer.parseInt(dizi[1]);
                    Calendar alarm = Calendar.getInstance();
                    alarm.set(Calendar.HOUR_OF_DAY, saat);
                    alarm.set(Calendar.MINUTE, dakika);
                    alarm.set(Calendar.SECOND, 0);
                    alarm.add(Calendar.DATE,1);
                    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
                    Intent alertIntent = new Intent(this, Broadcast_Reciver.class);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, i, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                    assert alarmManager != null;
                    alarmManager.set(AlarmManager.RTC_WAKEUP,alarm.getTimeInMillis(),pendingIntent);
                    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
                }
            }
        }
        Toast.makeText(getApplicationContext(),"Bildirimler Açık...",Toast.LENGTH_SHORT).show();
    }
...