Планирование нескольких повторяющихся сигналов - PullRequest
0 голосов
/ 21 марта 2020

Извините за мой плохой английский sh. В настоящее время я работаю над проектом со сканером кода QR. Я сталкиваюсь с этой ошибкой. Когда приложение сканирует код qr, оно должно запланировать повторение сигналов тревоги. Это работает очень хорошо, но если бы я дал диспетчеру аварийных сигналов, например, 3 аварийных сигнала. Например, сейчас 12:00, первый в 11:00, второй в 12:30 и третий в 13:00. Ни один из них не срабатывает. Так что это мой тестовый код. Повторение и счетчик - это глобальные переменные, начинающиеся с 0. Также нет ошибок, и я пытаюсь проверить их с выводом каждого результата, и я действительно не вижу ошибку logi c. Пожалуйста, помогите, спасибо. Так что это работает, если я не помещу эту часть кода.

if (System.currentTimeMillis() > cal.getTimeInMillis()){
                        TimeUntilTrigger = cal.getTimeInMillis() + 86400000;

                    }else{
                        TimeUntilTrigger = cal.getTimeInMillis();

                    }

Это мой полный тестовый код.

AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
                Calendar cal = Calendar.getInstance();
                repetition+=3;
                while (counter<repetition){

                    cal.set(Calendar.HOUR_OF_DAY,10);
                    cal.set(Calendar.MINUTE,55+counter*2);
                    timeDatabase.insertData(result.getContents(),String.valueOf(10),String.valueOf(55+counter*2));
                    long TimeUntilTrigger;
                    if (System.currentTimeMillis() > cal.getTimeInMillis()){
                        TimeUntilTrigger = cal.getTimeInMillis() + 86400000;

                    }else{
                        TimeUntilTrigger = cal.getTimeInMillis();

                    }

                    Intent alarmIntent = new Intent(getActivity(), AlarmReceiver.class);
                    pendingIntent = PendingIntent.getBroadcast(getActivity(),counter,alarmIntent,0);


                    manager.setRepeating(AlarmManager.RTC_WAKEUP,TimeUntilTrigger,AlarmManager.INTERVAL_DAY,pendingIntent);

                    counter++;
                }

1 Ответ

0 голосов
/ 21 марта 2020

Я решил проблему. Проблема заключалась в том, что вам нужно установить свои секунды и миллисекунды.

cal.set(Calendar.HOUR_OF_DAY,13);
cal.set(Calendar.MINUTE,51+counter*2);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
...