From 3128dea03a0e3981511dfed6f3ef555f0b574725 Mon Sep 17 00:00:00 2001 From: twyen Date: Wed, 5 Jul 2017 17:54:33 -0700 Subject: Use NOTIFICATION_INCOMING_CALL_QUIET when the in call UI is visible There's a bug in O notification framework that the HUN(heads up notification) will always show when a notification with fullScreenIntent is updated. Previously NOTIFICATION_INCOMING_CALL_QUIET is only used when the call is already active when the new incoming call is received. NOTIFICATION_INCOMING_CALL_QUIET will post the notification to the ongoing call channel instead of the incoming call, which in theory will have lower importance and the HUN will not show. In this CL, all incoming call notification will become "quiet" if the InCallUi is visible. Bug: 62458080 Test: StatusBarNotiferTest.java PiperOrigin-RevId: 161029526 Change-Id: I671105ecfc102beb43e52cf4d91d55a66d31cd0e --- java/com/android/incallui/StatusBarNotifier.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'java') diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java index 458df5149..53017a10e 100644 --- a/java/com/android/incallui/StatusBarNotifier.java +++ b/java/com/android/incallui/StatusBarNotifier.java @@ -66,6 +66,7 @@ import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.BitmapUtil; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.common.LogUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.enrichedcall.Session; import com.android.dialer.multimedia.MultimediaData; @@ -308,11 +309,19 @@ public class StatusBarNotifier if (callState == DialerCall.State.INCOMING || callState == DialerCall.State.CALL_WAITING || isVideoUpgradeRequest) { - boolean alreadyActive = - callList.getActiveOrBackgroundCall() != null - && InCallPresenter.getInstance().isShowingInCallUi(); - notificationType = - alreadyActive ? NOTIFICATION_INCOMING_CALL_QUIET : NOTIFICATION_INCOMING_CALL; + if (ConfigProviderBindings.get(mContext) + .getBoolean("quiet_incoming_call_if_ui_showing", true)) { + notificationType = + InCallPresenter.getInstance().isShowingInCallUi() + ? NOTIFICATION_INCOMING_CALL_QUIET + : NOTIFICATION_INCOMING_CALL; + } else { + boolean alreadyActive = + callList.getActiveOrBackgroundCall() != null + && InCallPresenter.getInstance().isShowingInCallUi(); + notificationType = + alreadyActive ? NOTIFICATION_INCOMING_CALL_QUIET : NOTIFICATION_INCOMING_CALL; + } } else { notificationType = NOTIFICATION_IN_CALL; } -- cgit v1.2.3