diff options
| author | 2021-09-08 21:04:17 +0000 | |
|---|---|---|
| committer | 2021-10-06 12:56:43 +0000 | |
| commit | af84f95ca029b0b33b9b63798acccbab5b4ffbcc (patch) | |
| tree | b9a8f0b2a41c0b7f868c173ca0468f760f9824ca | |
| parent | b62c73879e4cbd7c8facc9de8fa8ee8e7b822173 (diff) | |
[Ongoing Call] Show semi-transparent background behind status bar in immersive mode.
Test: atest+manual
Bug: 195839150
Change-Id: I0d79d889ddc199e290f8976b9b3ccb55ee8f51ac
3 files changed, 19 insertions, 8 deletions
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java index 6c5c4ef94921..9829918a0302 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java @@ -109,9 +109,8 @@ public interface StatusBarStateController { * Callback to be notified when the fullscreen or immersive state changes. * * @param isFullscreen if any of the system bar is hidden by the focused window. - * @param isImmersive if the navigation bar can stay hidden when the display gets tapped. */ - default void onFullscreenStateChanged(boolean isFullscreen, boolean isImmersive) {} + default void onFullscreenStateChanged(boolean isFullscreen) {} /** * Callback to be notified when the pulsing state changes diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java index 19876ba063bb..cbb3aba5cc64 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java @@ -446,7 +446,7 @@ public class StatusBarStateControllerImpl implements mIsFullscreen = isFullscreen; synchronized (mListeners) { for (RankedListener rl : new ArrayList<>(mListeners)) { - rl.mListener.onFullscreenStateChanged(isFullscreen, true /* isImmersive */); + rl.mListener.onFullscreenStateChanged(isFullscreen); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 2130e028e863..9415e506d179 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -628,6 +628,7 @@ public class StatusBar extends SystemUI implements private final Executor mUiBgExecutor; protected boolean mDozing; + private boolean mIsFullscreen; private final NotificationMediaManager mMediaManager; private final NotificationLockscreenUserManager mLockscreenUserManager; @@ -909,6 +910,9 @@ public class StatusBar extends SystemUI implements mActivityLaunchAnimator = activityLaunchAnimator; mDialogLaunchAnimator = dialogLaunchAnimator; + // The status bar background may need updating when the ongoing call status changes. + mOngoingCallController.addCallback((animate) -> maybeUpdateBarMode()); + // TODO(b/190746471): Find a better home for this. DateTimeView.setReceiverHandler(timeTickHandler); @@ -2237,7 +2241,7 @@ public class StatusBar extends SystemUI implements if (!mTransientShown) { mTransientShown = true; mNoAnimationOnNextBarModeChange = true; - handleTransientChanged(); + maybeUpdateBarMode(); } } @@ -2245,11 +2249,11 @@ public class StatusBar extends SystemUI implements void clearTransient() { if (mTransientShown) { mTransientShown = false; - handleTransientChanged(); + maybeUpdateBarMode(); } } - private void handleTransientChanged() { + private void maybeUpdateBarMode() { final int barMode = barMode(mTransientShown, mAppearance); if (updateBarMode(barMode)) { mLightBarController.onStatusBarModeChanged(barMode); @@ -2267,9 +2271,11 @@ public class StatusBar extends SystemUI implements return false; } - private static @TransitionMode int barMode(boolean isTransient, int appearance) { + private @TransitionMode int barMode(boolean isTransient, int appearance) { final int lightsOutOpaque = APPEARANCE_LOW_PROFILE_BARS | APPEARANCE_OPAQUE_STATUS_BARS; - if (isTransient) { + if (mOngoingCallController.hasOngoingCall() && mIsFullscreen) { + return MODE_SEMI_TRANSPARENT; + } else if (isTransient) { return MODE_SEMI_TRANSPARENT; } else if ((appearance & lightsOutOpaque) == lightsOutOpaque) { return MODE_LIGHTS_OUT; @@ -4471,6 +4477,12 @@ public class StatusBar extends SystemUI implements updateReportRejectedTouchVisibility(); Trace.endSection(); } + + @Override + public void onFullscreenStateChanged(boolean isFullscreen) { + mIsFullscreen = isFullscreen; + maybeUpdateBarMode(); + } }; private final BatteryController.BatteryStateChangeCallback mBatteryStateChangeCallback = |