У меня есть расписание будильника, чтобы запустить ретранслятор широковещательной передачи, когда он поднят во времени, и внутри проверки широковещательной передачи для некоторого параметра аварийного объекта, чтобы определить, какую деятельность нужно запустить. Приложение работает когда экран включен, но когда экран заблокирован он не работаетАктивность Не отображается, когда поднят будильник
Вот что я сделал:
-это для графика сигнализации
/* Prepare Alarm Intent*/
Intent alarmIntent = new Intent(ctx, LockRoute.class);
alarmIntent.putExtra(CONSTANTS.ALARM_NAME, alarm.alarmName);
alarmIntent.putExtra(CONSTANTS.ALARM_TONE, alarm.tone);
alarmIntent.putExtra(CONSTANTS.ALARM_LOCK_TYPE, alarm.unLockType);
//prepare the Pending intent
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, day.getId().intValue(), alarmIntent, 0);
и это широковещательный
/* Pass Alarm Info to unLock Screen*/
alarmRaised.putExtra(CONSTANTS.ALARM_NAME,bundle.getString(CONSTANTS.ALARM_NAME));
alarmRaised.putExtra(CONSTANTS.ALARM_TONE,bundle.getString(CONSTANTS.ALARM_TONE));
alarmRaised.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(alarmRaised);
И я добавил флаги для деятельности, чтобы показать, когда устройство заблокировано
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
Logger.init();
/* Check Device SDK to call the correct Function to TURN ON SCREEN */
if (Build.VERSION.SDK_INT < 20) {
if (!pm.isScreenOn()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+ WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
+WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
+WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Logger.d("less than 20");
}else {
Logger.d("SCREEN ON < 20");
}
} else {
if (!pm.isInteractive()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+ WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
+WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
+WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Logger.d("bigger = than 20");
}else {
Logger.d("SCREEN ON else 20");
}
}