Merge "Modified the vibration of the notification panel" into oc-mr1-dev
am: 968778e4a8
Change-Id: Ib112c2be942ad2abc7f743e413e2e3550889ca09
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user