Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6fc8a67 authored by Selim Cinek's avatar Selim Cinek Committed by android-build-merger
Browse files

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

am: 31817f7a

Change-Id: I62dd82879a14d13fe35143b9534449d10acde5b1
parents ab9f2f7d 31817f7a
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -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;


@@ -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;
    }

}
}
+29 −3
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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;
        }
        }
+13 −1
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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));
@@ -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() {
@@ -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();