Merge "Modified the vibration of the notification panel" into oc-mr1-dev am: 968778e4a8

am: 31817f7abd

Change-Id: I62dd82879a14d13fe35143b9534449d10acde5b1
This commit is contained in:
Selim Cinek
2017-08-18 00:45:35 +00:00
committed by android-build-merger
3 changed files with 51 additions and 4 deletions

View File

@@ -16,7 +16,10 @@
package com.android.systemui.statusbar.notification;
import android.content.Context;
import android.graphics.Color;
import android.os.UserHandle;
import android.provider.Settings;
import android.view.View;
import android.widget.ImageView;
@@ -57,4 +60,10 @@ public class NotificationUtils {
offsetView.getLocationOnScreen(sLocationOffset);
return sLocationOffset[1] - sLocationBase[1];
}
public static boolean isHapticFeedbackDisabled(Context context) {
return Settings.System.getIntForUser(context.getContentResolver(),
Settings.System.HAPTIC_FEEDBACK_ENABLED, 0, UserHandle.USER_CURRENT) == 0;
}
}

View File

@@ -16,14 +16,19 @@
package com.android.systemui.statusbar.phone;
import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Icon;
import android.os.AsyncTask;
import android.os.UserHandle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings;
import android.support.v4.util.ArrayMap;
import android.support.v4.util.ArraySet;
import android.util.AttributeSet;
@@ -34,6 +39,7 @@ import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.statusbar.AlphaOptimizedFrameLayout;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.stack.AnimationFilter;
import com.android.systemui.statusbar.stack.AnimationProperties;
import com.android.systemui.statusbar.stack.StackStateAnimator;
@@ -623,9 +629,10 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout {
boolean wasInShelf = icon.isInShelf();
boolean inShelf = iconAppearAmount == 1.0f;
icon.setIsInShelf(inShelf);
if (mVibrateOnAnimation && !justAdded && mAnimationsEnabled
&& wasInShelf != inShelf) {
mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_TICK));
if (shouldVibrateChange(wasInShelf != inShelf)) {
AsyncTask.execute(
() -> mVibrator.vibrate(VibrationEffect.get(
VibrationEffect.EFFECT_TICK)));
}
}
justAdded = false;
@@ -634,6 +641,25 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout {
justUndarkened = false;
}
private boolean shouldVibrateChange(boolean inShelfChanged) {
if (!mVibrateOnAnimation) {
return false;
}
if (justAdded) {
return false;
}
if (!mAnimationsEnabled) {
return false;
}
if (!inShelfChanged) {
return false;
}
if (isHapticFeedbackDisabled(mContext)) {
return false;
}
return true;
}
public boolean hasCustomTransformHeight() {
return isLastExpandIcon && customTransformHeight != NO_VALUE;
}

View File

@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.phone;
import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
@@ -23,9 +25,12 @@ import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Log;
import android.view.InputDevice;
@@ -45,6 +50,7 @@ import com.android.systemui.classifier.FalsingManager;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.statusbar.FlingAnimationUtils;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import java.io.FileDescriptor;
@@ -59,6 +65,7 @@ public abstract class PanelView extends FrameLayout {
private float mMinExpandHeight;
private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger();
private boolean mPanelUpdateWhenAnimatorEnds;
private boolean mVibrateOnOpening;
private final void logf(String fmt, Object... args) {
Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
@@ -203,6 +210,8 @@ public abstract class PanelView extends FrameLayout {
mNotificationsDragEnabled =
getResources().getBoolean(R.bool.config_enableNotificationShadeDrag);
mVibrator = mContext.getSystemService(Vibrator.class);
mVibrateOnOpening = mContext.getResources().getBoolean(
R.bool.config_vibrateOnIconAnimation);
}
protected void loadDimens() {
@@ -394,7 +403,10 @@ public abstract class PanelView extends FrameLayout {
runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(),
false /* collapseWhenFinished */);
notifyBarPanelExpansionChanged();
mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
if (mVibrateOnOpening && !isHapticFeedbackDisabled(mContext)) {
AsyncTask.execute(
() -> mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_TICK)));
}
}
protected abstract float getOpeningHeight();