Merge "Move vibration haptic from down event to the first move expanding shade." into tm-qpr-dev am: bc3406f638

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19970185

Change-Id: I6b799e8fd42554214784f08d7a82423661d0ff71
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jason Mylen
2022-09-21 23:22:22 +00:00
committed by Automerger Merge Worker
2 changed files with 19 additions and 5 deletions

View File

@@ -2230,7 +2230,8 @@ public final class NotificationPanelViewController extends PanelViewController {
if (cancel) { if (cancel) {
collapse(false /* delayed */, 1.0f /* speedUpFactor */); collapse(false /* delayed */, 1.0f /* speedUpFactor */);
} else { } else {
maybeVibrateOnOpening(); // Window never will receive touch events that typically trigger haptic on open.
maybeVibrateOnOpening(false /* openingWithTouch */);
fling(velocity > 1f ? 1000f * velocity : 0, true /* expand */); fling(velocity > 1f ? 1000f * velocity : 0, true /* expand */);
} }
onTrackingStopped(false); onTrackingStopped(false);

View File

@@ -96,6 +96,7 @@ public abstract class PanelViewController {
private float mMinExpandHeight; private float mMinExpandHeight;
private boolean mPanelUpdateWhenAnimatorEnds; private boolean mPanelUpdateWhenAnimatorEnds;
private final boolean mVibrateOnOpening; private final boolean mVibrateOnOpening;
private boolean mHasVibratedOnOpen = false;
protected boolean mIsLaunchAnimationRunning; protected boolean mIsLaunchAnimationRunning;
private int mFixedDuration = NO_FIXED_DURATION; private int mFixedDuration = NO_FIXED_DURATION;
protected float mOverExpansion; protected float mOverExpansion;
@@ -353,8 +354,8 @@ public abstract class PanelViewController {
private void startOpening(MotionEvent event) { private void startOpening(MotionEvent event) {
updatePanelExpansionAndVisibility(); updatePanelExpansionAndVisibility();
maybeVibrateOnOpening(); // Reset at start so haptic can be triggered as soon as panel starts to open.
mHasVibratedOnOpen = false;
//TODO: keyguard opens QS a different way; log that too? //TODO: keyguard opens QS a different way; log that too?
// Log the position of the swipe that opened the panel // Log the position of the swipe that opened the panel
@@ -368,9 +369,18 @@ public abstract class PanelViewController {
.log(LockscreenUiEvent.LOCKSCREEN_UNLOCKED_NOTIFICATION_PANEL_EXPAND); .log(LockscreenUiEvent.LOCKSCREEN_UNLOCKED_NOTIFICATION_PANEL_EXPAND);
} }
protected void maybeVibrateOnOpening() { /**
* Maybe vibrate as panel is opened.
*
* @param openingWithTouch Whether the panel is being opened with touch. If the panel is instead
* being opened programmatically (such as by the open panel gesture), we always play haptic.
*/
protected void maybeVibrateOnOpening(boolean openingWithTouch) {
if (mVibrateOnOpening) { if (mVibrateOnOpening) {
if (!openingWithTouch || !mHasVibratedOnOpen) {
mVibratorHelper.vibrate(VibrationEffect.EFFECT_TICK); mVibratorHelper.vibrate(VibrationEffect.EFFECT_TICK);
mHasVibratedOnOpen = true;
}
} }
} }
@@ -1371,6 +1381,9 @@ public abstract class PanelViewController {
break; break;
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
addMovement(event); addMovement(event);
if (!isFullyCollapsed()) {
maybeVibrateOnOpening(true /* openingWithTouch */);
}
float h = y - mInitialExpandY; float h = y - mInitialExpandY;
// If the panel was collapsed when touching, we only need to check for the // If the panel was collapsed when touching, we only need to check for the