Fixed the behavior for HUNs with fullscreen intents

Now HUNs with full screen intents don't fire automatically
when added and don't time out anymore when HUN'd

Change-Id: Ic2d5033febe514760cbb4e6e028c3cea84d07cd8
This commit is contained in:
Selim Cinek
2015-04-15 19:29:49 -07:00
parent 2aab2fb76e
commit 31d9ef7a40
2 changed files with 13 additions and 6 deletions

View File

@@ -1116,11 +1116,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (shadeEntry == null) {
return;
}
if (mUseHeadsUp && shouldInterrupt(notification)) {
boolean isHeadsUped = mUseHeadsUp && shouldInterrupt(notification);
if (isHeadsUped) {
mHeadsUpManager.showNotification(shadeEntry);
}
if (notification.getNotification().fullScreenIntent != null) {
if (!isHeadsUped && notification.getNotification().fullScreenIntent != null) {
// Stop screensaver if the notification has a full-screen intent.
// (like an incoming phone call)
awakenDreams();

View File

@@ -464,15 +464,21 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
public void updateEntry() {
long currentTime = mClock.currentTimeMillis();
postTime = Math.max(postTime, currentTime);
long finishTime = postTime + mHeadsUpNotificationDecay;
long removeDelay = Math.max(finishTime - currentTime, mMinimumDisplayTime);
earliestRemovaltime = currentTime + mMinimumDisplayTime;
postTime = Math.max(postTime, currentTime);
removeAutoCancelCallbacks();
mHandler.postDelayed(mRemoveHeadsUpRunnable, removeDelay);
if (canEntryDecay()) {
long finishTime = postTime + mHeadsUpNotificationDecay;
long removeDelay = Math.max(finishTime - currentTime, mMinimumDisplayTime);
mHandler.postDelayed(mRemoveHeadsUpRunnable, removeDelay);
}
updateSortOrder(HeadsUpEntry.this);
}
private boolean canEntryDecay() {
return entry.notification.getNotification().fullScreenIntent == null;
}
@Override
public int compareTo(HeadsUpEntry o) {
return postTime < o.postTime ? 1