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

Commit 779a3ebd authored by Roman Birg's avatar Roman Birg Committed by Gerrit Code Review
Browse files

SystemUI: show visualizer in shade-locked view



This brings back the behavior we had in 12.1 - visualizer would still be
visible in the shade locked state.

Also with the following improvements:
    * use less alpha
    * always attach/detach in a background thread (Async task)
    * use the statusbar state instead keyguard view state listener

Change-Id: I6b8a57f9f0bba6ba0591de0cb1f94a0eb904cc1c
Signed-off-by: default avatarRoman Birg <roman@cyngn.com>
parent edf01853
Loading
Loading
Loading
Loading
+26 −32
Original line number Diff line number Diff line
@@ -32,11 +32,9 @@ import android.util.Log;
import android.view.View;

import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import cyanogenmod.providers.CMSettings;

public class VisualizerView extends View implements Palette.PaletteAsyncListener,
        KeyguardMonitor.Callback {
public class VisualizerView extends View implements Palette.PaletteAsyncListener {

    private static final String TAG = VisualizerView.class.getSimpleName();
    private static final boolean DEBUG = false;
@@ -48,6 +46,7 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
    private ValueAnimator[] mValueAnimators;
    private float[] mFFTPoints;

    private int mStatusBarState;
    private boolean mVisualizerEnabled = false;
    private boolean mVisible = false;
    private boolean mPlaying = false;
@@ -59,7 +58,6 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
    private int mColor;
    private Bitmap mCurrentBitmap;

    private KeyguardMonitor mKeyguardMonitor;
    private SettingsObserver mObserver;

    private Visualizer.OnDataCaptureListener mVisualizerListener =
@@ -114,6 +112,13 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
        }
    };

    private final Runnable mAsyncUnlinkVisualizer = new Runnable() {
        @Override
        public void run() {
            AsyncTask.execute(mUnlinkVisualizer);
        }
    };

    private final Runnable mUnlinkVisualizer = new Runnable() {
        @Override
        public void run() {
@@ -164,23 +169,19 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
        this(context, null, 0);
    }

    @Override
    public void onKeyguardChanged() {
        updateViewVisibility();
    }

    private void updateViewVisibility() {
        setVisibility(mKeyguardMonitor != null && mKeyguardMonitor.isShowing()
                && mVisualizerEnabled ? View.VISIBLE : View.GONE);
        final int curVis = getVisibility();
        final int newVis = mStatusBarState != StatusBarState.SHADE
                && mVisualizerEnabled ? View.VISIBLE : View.GONE;
        if (curVis != newVis) {
            setVisibility(newVis);
            checkStateChanged();
        }
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        if (mKeyguardMonitor != null) {
            mKeyguardMonitor.addCallback(this);
        }
        mObserver = new SettingsObserver(new Handler());
        mObserver.observe();
        mObserver.update();
@@ -189,9 +190,6 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        if (mKeyguardMonitor != null) {
            mKeyguardMonitor.removeCallback(this);
        }
        mObserver.unobserve();
        mObserver = null;
        mCurrentBitmap = null;
@@ -223,7 +221,7 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener

    @Override
    public boolean hasOverlappingRendering() {
        return mVisualizerEnabled && mDisplaying;
        return false;
    }

    @Override
@@ -235,16 +233,6 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
        }
    }

    public void setKeyguardMonitor(KeyguardMonitor kgm) {
        mKeyguardMonitor = kgm;
        if (isAttachedToWindow()) {
            // otherwise we might never register ourselves
            mKeyguardMonitor.removeCallback(this);
            mKeyguardMonitor.addCallback(this);
            updateViewVisibility();
        }
    }

    public void setVisible(boolean visible) {
        if (mVisible != visible) {
            if (DEBUG) {
@@ -295,6 +283,13 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
        }
    }

    public void setStatusBarState(int statusBarState) {
        if (mStatusBarState != statusBarState) {
            mStatusBarState = statusBarState;
            updateViewVisibility();
        }
    }

    public void setBitmap(Bitmap bitmap) {
        if (mCurrentBitmap == bitmap) {
            return;
@@ -365,13 +360,12 @@ public class VisualizerView extends View implements Palette.PaletteAsyncListener
                if (mVisible) {
                    animate()
                            .alpha(0f)
                            .withEndAction(mUnlinkVisualizer)
                            .withEndAction(mAsyncUnlinkVisualizer)
                            .setDuration(600);
                } else {
                    AsyncTask.execute(mUnlinkVisualizer);
                    animate().
                            alpha(0f)
                            .withEndAction(null)
                            .withEndAction(mAsyncUnlinkVisualizer)
                            .setDuration(0);
                }
            }
+0 −1
Original line number Diff line number Diff line
@@ -2044,7 +2044,6 @@ public class NotificationPanelView extends PanelView implements
                * mKeyguardStatusBarAnimateAlpha);
        mKeyguardStatusBar.setVisibility(mKeyguardStatusBar.getAlpha() != 0f
                && !mDozing ? VISIBLE : INVISIBLE);
        mStatusBar.getVisualizer().setAlpha(mKeyguardStatusBar.getAlpha());
    }

    private void updateHeaderKeyguard() {
+2 −2
Original line number Diff line number Diff line
@@ -1314,7 +1314,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            }
        }

        mVisualizerView.setKeyguardMonitor(mKeyguardMonitor);
        mHeader.setNextAlarmController(mNextAlarmController);
        mHeader.setWeatherController(mWeatherController);

@@ -4723,6 +4722,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            clearNotificationEffects();
        }
        mState = state;
        mVisualizerView.setStatusBarState(state);
        mGroupManager.setStatusBarState(state);
        mStatusBarWindowManager.setStatusBarState(state);
        updateDozing();