проблема с задержкой диспетчера тревоги при звонке тревоги - PullRequest
0 голосов
/ 26 марта 2019

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

public void showHourPicker(View view) {


    currentHour = calendar.get(Calendar.HOUR_OF_DAY);
    currentMinute = calendar.get(Calendar.MINUTE);

    timePickerDialog = new TimePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar, new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int hourOfDay, int minutes) {

            if (hourOfDay >= 12) {
                amPm = "PM";
            } else {
                amPm = "AM";
            }
            txtTime.setText(String.format("%02d:%02d ", hourOfDay, minutes) + amPm);

            calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
            calendar.set(Calendar.MINUTE,minutes);
        }

    }, currentHour, currentMinute, false);

    timePickerDialog.setTitle(" Your Expected Time : " + exp.getText());
    timePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
    timePickerDialog.show();

    startAlarm(calendar);

}

public void startAlarm(Calendar calendar) {

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, MyBroadcastReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

}

1 Ответ

0 голосов
/ 26 марта 2019

Это предполагаемое поведение, как описано в AlarmManager.setRepeating:

Начиная с API 19, все повторяющиеся тревоги являются неточными.Если вашему приложению требуется точное время доставки, оно должно использовать одноразовые точные сигналы тревоги, каждый раз меняя расписание, как описано выше.

...