Я создаю будильник. Для того, чтобы установить дату и время, я использую AlarmManager
:Создать будильник на android lollipop
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, note.getAlarmTime(), pi);
В моей BroadcastReceiver
в методе onReceive
я начинаю новую деятельность (ее как диалог с информацией и воспроизведения музыки) и для разблокировки экрана:
PowerManager pm;
PowerManager.WakeLock wakeLock;
KeyguardManager.KeyguardLock myLock;
KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
isLocked = myKeyGuard.inKeyguardRestrictedInputMode();
myLock = myKeyGuard.newKeyguardLock(KEYGUARD_SERVICE);
if (isLocked) {
myLock.disableKeyguard();
}
pm = (PowerManager) getApplicationContext()
.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire();
Все это работает отлично, но на устройствах Lollipop я заметил, что будильник не всегда срабатывает, особенно когда устройство было заблокировано более 20 минут. Что бы это могло быть? Может быть, какая-то функция, которая сбрасывает указанное время, или мне нужен другой метод, чтобы разблокировать экран программно на Android-Lollipop?
Спасибо, сейчас тестирование. –