Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -16,7 +16,10 @@ package com.android.systemui.statusbar.notification; package com.android.systemui.statusbar.notification; import android.content.Context; import android.graphics.Color; import android.graphics.Color; import android.os.UserHandle; import android.provider.Settings; import android.view.View; import android.view.View; import android.widget.ImageView; import android.widget.ImageView; Loading Loading @@ -57,4 +60,10 @@ public class NotificationUtils { offsetView.getLocationOnScreen(sLocationOffset); offsetView.getLocationOnScreen(sLocationOffset); return sLocationOffset[1] - sLocationBase[1]; 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; } } } packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +29 −3 Original line number Original line Diff line number Diff line Loading @@ -16,14 +16,19 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.drawable.Icon; import android.graphics.drawable.Icon; import android.os.AsyncTask; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.VibrationEffect; import android.os.Vibrator; import android.os.Vibrator; import android.provider.Settings; import android.support.v4.util.ArrayMap; import android.support.v4.util.ArrayMap; import android.support.v4.util.ArraySet; import android.support.v4.util.ArraySet; import android.util.AttributeSet; import android.util.AttributeSet; Loading @@ -34,6 +39,7 @@ import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.statusbar.AlphaOptimizedFrameLayout; import com.android.systemui.statusbar.AlphaOptimizedFrameLayout; import com.android.systemui.statusbar.StatusBarIconView; 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.AnimationFilter; import com.android.systemui.statusbar.stack.AnimationProperties; import com.android.systemui.statusbar.stack.AnimationProperties; import com.android.systemui.statusbar.stack.StackStateAnimator; import com.android.systemui.statusbar.stack.StackStateAnimator; Loading Loading @@ -623,9 +629,10 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { boolean wasInShelf = icon.isInShelf(); boolean wasInShelf = icon.isInShelf(); boolean inShelf = iconAppearAmount == 1.0f; boolean inShelf = iconAppearAmount == 1.0f; icon.setIsInShelf(inShelf); icon.setIsInShelf(inShelf); if (mVibrateOnAnimation && !justAdded && mAnimationsEnabled if (shouldVibrateChange(wasInShelf != inShelf)) { && wasInShelf != inShelf) { AsyncTask.execute( mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_TICK)); () -> mVibrator.vibrate(VibrationEffect.get( VibrationEffect.EFFECT_TICK))); } } } } justAdded = false; justAdded = false; Loading @@ -634,6 +641,25 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { justUndarkened = false; 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() { public boolean hasCustomTransformHeight() { return isLastExpandIcon && customTransformHeight != NO_VALUE; return isLastExpandIcon && customTransformHeight != NO_VALUE; } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +13 −1 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled; import android.animation.Animator; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ObjectAnimator; Loading @@ -23,9 +25,12 @@ import android.animation.ValueAnimator; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.os.AsyncTask; import android.os.SystemClock; import android.os.SystemClock; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.VibrationEffect; import android.os.Vibrator; import android.os.Vibrator; import android.provider.Settings; import android.util.AttributeSet; import android.util.AttributeSet; import android.util.Log; import android.util.Log; import android.view.InputDevice; import android.view.InputDevice; Loading @@ -45,6 +50,7 @@ import com.android.systemui.classifier.FalsingManager; import com.android.systemui.doze.DozeLog; import com.android.systemui.doze.DozeLog; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.HeadsUpManager; import java.io.FileDescriptor; import java.io.FileDescriptor; Loading @@ -59,6 +65,7 @@ public abstract class PanelView extends FrameLayout { private float mMinExpandHeight; private float mMinExpandHeight; private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private boolean mPanelUpdateWhenAnimatorEnds; private boolean mPanelUpdateWhenAnimatorEnds; private boolean mVibrateOnOpening; private final void logf(String fmt, Object... args) { private final void logf(String fmt, Object... args) { Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args)); Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args)); Loading Loading @@ -203,6 +210,8 @@ public abstract class PanelView extends FrameLayout { mNotificationsDragEnabled = mNotificationsDragEnabled = getResources().getBoolean(R.bool.config_enableNotificationShadeDrag); getResources().getBoolean(R.bool.config_enableNotificationShadeDrag); mVibrator = mContext.getSystemService(Vibrator.class); mVibrator = mContext.getSystemService(Vibrator.class); mVibrateOnOpening = mContext.getResources().getBoolean( R.bool.config_vibrateOnIconAnimation); } } protected void loadDimens() { protected void loadDimens() { Loading Loading @@ -394,7 +403,10 @@ public abstract class PanelView extends FrameLayout { runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(), runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(), false /* collapseWhenFinished */); false /* collapseWhenFinished */); notifyBarPanelExpansionChanged(); 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(); protected abstract float getOpeningHeight(); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -16,7 +16,10 @@ package com.android.systemui.statusbar.notification; package com.android.systemui.statusbar.notification; import android.content.Context; import android.graphics.Color; import android.graphics.Color; import android.os.UserHandle; import android.provider.Settings; import android.view.View; import android.view.View; import android.widget.ImageView; import android.widget.ImageView; Loading Loading @@ -57,4 +60,10 @@ public class NotificationUtils { offsetView.getLocationOnScreen(sLocationOffset); offsetView.getLocationOnScreen(sLocationOffset); return sLocationOffset[1] - sLocationBase[1]; 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; } } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +29 −3 Original line number Original line Diff line number Diff line Loading @@ -16,14 +16,19 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.drawable.Icon; import android.graphics.drawable.Icon; import android.os.AsyncTask; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.VibrationEffect; import android.os.Vibrator; import android.os.Vibrator; import android.provider.Settings; import android.support.v4.util.ArrayMap; import android.support.v4.util.ArrayMap; import android.support.v4.util.ArraySet; import android.support.v4.util.ArraySet; import android.util.AttributeSet; import android.util.AttributeSet; Loading @@ -34,6 +39,7 @@ import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.statusbar.AlphaOptimizedFrameLayout; import com.android.systemui.statusbar.AlphaOptimizedFrameLayout; import com.android.systemui.statusbar.StatusBarIconView; 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.AnimationFilter; import com.android.systemui.statusbar.stack.AnimationProperties; import com.android.systemui.statusbar.stack.AnimationProperties; import com.android.systemui.statusbar.stack.StackStateAnimator; import com.android.systemui.statusbar.stack.StackStateAnimator; Loading Loading @@ -623,9 +629,10 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { boolean wasInShelf = icon.isInShelf(); boolean wasInShelf = icon.isInShelf(); boolean inShelf = iconAppearAmount == 1.0f; boolean inShelf = iconAppearAmount == 1.0f; icon.setIsInShelf(inShelf); icon.setIsInShelf(inShelf); if (mVibrateOnAnimation && !justAdded && mAnimationsEnabled if (shouldVibrateChange(wasInShelf != inShelf)) { && wasInShelf != inShelf) { AsyncTask.execute( mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_TICK)); () -> mVibrator.vibrate(VibrationEffect.get( VibrationEffect.EFFECT_TICK))); } } } } justAdded = false; justAdded = false; Loading @@ -634,6 +641,25 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { justUndarkened = false; 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() { public boolean hasCustomTransformHeight() { return isLastExpandIcon && customTransformHeight != NO_VALUE; return isLastExpandIcon && customTransformHeight != NO_VALUE; } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +13 −1 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone; import static com.android.systemui.statusbar.notification.NotificationUtils.isHapticFeedbackDisabled; import android.animation.Animator; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ObjectAnimator; Loading @@ -23,9 +25,12 @@ import android.animation.ValueAnimator; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.os.AsyncTask; import android.os.SystemClock; import android.os.SystemClock; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.VibrationEffect; import android.os.Vibrator; import android.os.Vibrator; import android.provider.Settings; import android.util.AttributeSet; import android.util.AttributeSet; import android.util.Log; import android.util.Log; import android.view.InputDevice; import android.view.InputDevice; Loading @@ -45,6 +50,7 @@ import com.android.systemui.classifier.FalsingManager; import com.android.systemui.doze.DozeLog; import com.android.systemui.doze.DozeLog; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.HeadsUpManager; import java.io.FileDescriptor; import java.io.FileDescriptor; Loading @@ -59,6 +65,7 @@ public abstract class PanelView extends FrameLayout { private float mMinExpandHeight; private float mMinExpandHeight; private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private boolean mPanelUpdateWhenAnimatorEnds; private boolean mPanelUpdateWhenAnimatorEnds; private boolean mVibrateOnOpening; private final void logf(String fmt, Object... args) { private final void logf(String fmt, Object... args) { Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args)); Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args)); Loading Loading @@ -203,6 +210,8 @@ public abstract class PanelView extends FrameLayout { mNotificationsDragEnabled = mNotificationsDragEnabled = getResources().getBoolean(R.bool.config_enableNotificationShadeDrag); getResources().getBoolean(R.bool.config_enableNotificationShadeDrag); mVibrator = mContext.getSystemService(Vibrator.class); mVibrator = mContext.getSystemService(Vibrator.class); mVibrateOnOpening = mContext.getResources().getBoolean( R.bool.config_vibrateOnIconAnimation); } } protected void loadDimens() { protected void loadDimens() { Loading Loading @@ -394,7 +403,10 @@ public abstract class PanelView extends FrameLayout { runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(), runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(), false /* collapseWhenFinished */); false /* collapseWhenFinished */); notifyBarPanelExpansionChanged(); 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(); protected abstract float getOpeningHeight(); Loading