我正在创建一个闹钟。要设置日期和时间,我使用AlarmManager
:
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
的 in 方法中,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();
这一切都很好,但在棒棒糖设备上,我注意到警报并不总是有效,尤其是当设备被阻止超过 20 分钟时。会是什么呢?也许是一些重置指定时间的功能,或者我需要一种不同的方法来在 android Lollipop 上以编程方式解锁屏幕?