Как сделать, чтобы повторяющийся сигнал тревоги работал, даже если устройство находится в режиме ожидания - PullRequest
0 голосов
/ 29 октября 2019

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

        Intent intent = new Intent(Reminder.this, AlarmReceiverDaily.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(Reminder.this, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager = (AlarmManager) Reminder.this.getSystemService(ALARM_SERVICE);
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent);

Как я могу установить повторяющийся сигнал тревоги, даже если мое устройство находится в режиме ожидания из следующего кода?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
        alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(targetCal.getTimeInMillis(),pendingIntent),pendingIntent);
    else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        alarmManager.setExact(AlarmManager.RTC, targetCal.getTimeInMillis(), pendingIntent);
    else
        alarmManager.set(AlarmManager.RTC, targetCal.getTimeInMillis(), pendingIntent);

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

1 Ответ

0 голосов
/ 29 октября 2019

Вы должны использовать:

if( Build.VERSION.SDK_INT >= 23 ){
    alarmManager.setExactAndAllowWhileIdle( ... );
}
...