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

Commit cf5cfe3d authored by Weijie Wang's avatar Weijie Wang Committed by Bruno Martins
Browse files

SystemUI: Update the media notification only when needed

The media notification is updated every second even if the
screen is turned off, which causes unnecessary power consumption.
So update the media notification only when needed

Change-Id: I4d5bcc56fe804754eebec92d83397dac354ec012
CRs-Fixed: 2493218
parent d4568ead
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.widget.SeekBar;
import android.widget.TextView;

@@ -45,7 +46,6 @@ import com.android.systemui.statusbar.TransformableView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Wraps a notification containing a media template
@@ -208,13 +208,19 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi

    private void startTimer() {
        clearTimer();
        mSeekBarTimer = new Timer(true /* isDaemon */);
        mSeekBarTimer.schedule(new TimerTask() {
        updateSeekBarView();
    }

    private void updateSeekBarView() {
        mSeekBarView.getViewTreeObserver().addOnPreDrawListener(
                new ViewTreeObserver.OnPreDrawListener(){
            @Override
            public void run() {
                mHandler.post(mOnUpdateTimerTick);
            public boolean onPreDraw() {
                mSeekBarView.getViewTreeObserver().removeOnPreDrawListener(this);
                mHandler.postDelayed(mOnUpdateTimerTick, PROGRESS_UPDATE_INTERVAL);
                return true;
            }
        }, 0, PROGRESS_UPDATE_INTERVAL);
        });
    }

    private void clearTimer() {
@@ -261,7 +267,7 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
        public void run() {
            if (mMediaController != null && mSeekBar != null) {
                PlaybackState playbackState = mMediaController.getPlaybackState();

                updateSeekBarView();
                if (playbackState != null) {
                    updatePlaybackUi(playbackState);
                } else {