on screen off: convert heads up to full screen intent.

Let the app handle screen off as appropriate.

Bug: 10209767
Change-Id: I3949def1980118c0380b173a83148321ad8c5d95
This commit is contained in:
Chris Wren
2013-08-07 17:39:35 -04:00
parent 6ccf0affd0
commit e97f90b9bb
2 changed files with 29 additions and 0 deletions

View File

@@ -89,6 +89,7 @@ public abstract class BaseStatusBar extends SystemUI implements
protected static final int MSG_CLOSE_SEARCH_PANEL = 1025; protected static final int MSG_CLOSE_SEARCH_PANEL = 1025;
protected static final int MSG_SHOW_HEADS_UP = 1026; protected static final int MSG_SHOW_HEADS_UP = 1026;
protected static final int MSG_HIDE_HEADS_UP = 1027; protected static final int MSG_HIDE_HEADS_UP = 1027;
protected static final int MSG_ESCALATE_HEADS_UP = 1028;
protected static final boolean ENABLE_HEADS_UP = true; protected static final boolean ENABLE_HEADS_UP = true;
// scores above this threshold should be displayed in heads up mode. // scores above this threshold should be displayed in heads up mode.
@@ -1035,6 +1036,12 @@ public abstract class BaseStatusBar extends SystemUI implements
} }
} }
protected void notifyHeadsUpScreenOn(boolean screenOn) {
if (!screenOn && mInterruptingNotificationEntry != null) {
mHandler.sendEmptyMessage(MSG_ESCALATE_HEADS_UP);
}
}
protected boolean shouldInterrupt(StatusBarNotification sbn) { protected boolean shouldInterrupt(StatusBarNotification sbn) {
Notification notification = sbn.getNotification(); Notification notification = sbn.getNotification();
// some predicates to make the boolean logic legible // some predicates to make the boolean logic legible

View File

@@ -1354,6 +1354,27 @@ public class PhoneStatusBar extends BaseStatusBar {
setHeadsUpVisibility(false); setHeadsUpVisibility(false);
mInterruptingNotificationEntry = null; mInterruptingNotificationEntry = null;
break; break;
case MSG_ESCALATE_HEADS_UP:
escalateHeadsUp();
setHeadsUpVisibility(false);
mInterruptingNotificationEntry = null;
break;
}
}
}
/** if the interrupting notification had a fullscreen intent, fire it now. */
private void escalateHeadsUp() {
if (mInterruptingNotificationEntry != null) {
final StatusBarNotification sbn = mInterruptingNotificationEntry.notification;
final Notification notification = sbn.getNotification();
if (notification.fullScreenIntent != null) {
if (DEBUG)
Log.d(TAG, "converting a heads up to fullScreen");
try {
notification.fullScreenIntent.send();
} catch (PendingIntent.CanceledException e) {
}
} }
} }
} }
@@ -2516,6 +2537,7 @@ public class PhoneStatusBar extends BaseStatusBar {
// no waiting! // no waiting!
makeExpandedInvisible(); makeExpandedInvisible();
notifyNavigationBarScreenOn(false); notifyNavigationBarScreenOn(false);
notifyHeadsUpScreenOn(false);
} }
else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) { else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
if (DEBUG) { if (DEBUG) {