summaryrefslogtreecommitdiffstats
path: root/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java')
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java35
1 files changed, 30 insertions, 5 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java
index 26d56437..8110e1e2 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java
@@ -83,6 +83,9 @@ public class CellBroadcastAlertFullScreen extends Activity {
/** Handler to add and remove screen on flags for emergency alerts. */
private final ScreenOffHandler mScreenOffHandler = new ScreenOffHandler();
+ /** Duration of alert if set to 0 then do not allow system keys to dismiss the alert. */
+ private int mDuration = 1;
+
/**
* Animation handler for the flashing warning icon (emergency alerts only).
*/
@@ -182,6 +185,13 @@ public class CellBroadcastAlertFullScreen extends Activity {
/** Package local constructor (called from outer class). */
ScreenOffHandler() {}
+ /** Add screen on window flags. */
+ void keepScreenOn() {
+ addWindowFlags();
+ addSystemKeyFlag();
+ Log.d(TAG, "added FLAG_KEEP_SCREEN_ON & PRIVATE_FLAG_PREVENT_SYSTEM_KEYS");
+ }
+
/** Add screen on window flags and queue a delayed message to remove them later. */
void startScreenOnTimer() {
addWindowFlags();
@@ -203,6 +213,11 @@ public class CellBroadcastAlertFullScreen extends Activity {
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
+ /** Set the system keys flag. */
+ private void addSystemKeyFlag() {
+ getWindow().addPrivateFlags(WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS);
+ }
+
/** Clear the screen on window flags. */
private void clearWindowFlags() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
@@ -269,15 +284,15 @@ public class CellBroadcastAlertFullScreen extends Activity {
// Get message list from saved Bundle or from Intent.
if (savedInstanceState != null) {
- Log.d(TAG, "onCreate getting message list from saved instance state");
+ Log.d(TAG, "onCreate getting message list from saved instance state, Duration=" + mDuration);
mMessageList = savedInstanceState.getParcelableArrayList(
CellBroadcastMessage.SMS_CB_MESSAGE_EXTRA);
} else {
- Log.d(TAG, "onCreate getting message list from intent");
Intent intent = getIntent();
mMessageList = intent.getParcelableArrayListExtra(
CellBroadcastMessage.SMS_CB_MESSAGE_EXTRA);
-
+ mDuration = intent.getIntExtra(CellBroadcastAlertAudio.ALERT_AUDIO_DURATION_EXTRA, 1);
+ Log.d(TAG, "onCreate getting message list from intent, Duration=" + mDuration);
// If we were started from a notification, dismiss it.
clearNotification(intent);
}
@@ -295,8 +310,13 @@ public class CellBroadcastAlertFullScreen extends Activity {
if (CellBroadcastConfigService.isEmergencyAlertMessage(message) &&
(savedInstanceState != null ||
!getIntent().getBooleanExtra(SCREEN_OFF_EXTRA, false))) {
- Log.d(TAG, "onCreate setting screen on timer for emergency alert");
- mScreenOffHandler.startScreenOnTimer();
+ if (mDuration == 0) {
+ Log.d(TAG, "onCreate keep screen on for emergency alert");
+ mScreenOffHandler.keepScreenOn();
+ } else {
+ Log.d(TAG, "onCreate setting screen on timer for emergency alert");
+ mScreenOffHandler.startScreenOnTimer();
+ }
}
updateAlertText(message);
@@ -462,6 +482,10 @@ public class CellBroadcastAlertFullScreen extends Activity {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
+ if (mDuration == 0) {
+ Log.d(TAG, "Override all key events till the Alert Dialog is not dismissed");
+ return true;
+ }
CellBroadcastMessage message = getLatestMessage();
if (message != null && !message.isEtwsMessage()) {
switch (event.getKeyCode()) {
@@ -488,6 +512,7 @@ public class CellBroadcastAlertFullScreen extends Activity {
*/
@Override
public void onBackPressed() {
+ Log.d(TAG, "Override back key events till the Alert Dialog is not dismissed");
// ignored
}
}