ブロードキャスト受信機が起動したときにアラームをスケジュールし、ブロードキャストチェックの内部でアラームオブジェクトのいくつかのパラメータを調べて起動するアクティビティを決定する画面がオンになっているが、画面がロックされているとき、それはアラームが発生したときにアクティビティが表示されない
を働いていないとき、ここに私がやったことだ:スケジュールの
- このアラーム
/* 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");
}
}