Merge "Revert "Stop timer when notification isn't visible"" into qt-dev

This commit is contained in:
Beth Thibodeau
2019-07-31 20:31:53 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 86 deletions

View File

@@ -26,8 +26,6 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RemoteViews;
import java.util.ArrayList;
/**
* A TextView that can float around an image on the end.
*
@@ -44,7 +42,6 @@ public class MediaNotificationView extends FrameLayout {
private View mMainColumn;
private View mMediaContent;
private int mImagePushIn;
private ArrayList<VisibilityChangeListener> mListeners;
public MediaNotificationView(Context context) {
this(context, null);
@@ -171,48 +168,4 @@ public class MediaNotificationView extends FrameLayout {
mMainColumn = findViewById(com.android.internal.R.id.notification_main_column);
mMediaContent = findViewById(com.android.internal.R.id.notification_media_content);
}
@Override
public void onVisibilityAggregated(boolean isVisible) {
super.onVisibilityAggregated(isVisible);
for (int i = 0; i < mListeners.size(); i++) {
mListeners.get(i).onAggregatedVisibilityChanged(isVisible);
}
}
/**
* Add a listener to receive updates on the visibility of this view
*
* @param listener The listener to add.
*/
public void addVisibilityListener(VisibilityChangeListener listener) {
if (mListeners == null) {
mListeners = new ArrayList<>();
}
if (!mListeners.contains(listener)) {
mListeners.add(listener);
}
}
/**
* Remove the specified listener
*
* @param listener The listener to remove.
*/
public void removeVisibilityListener(VisibilityChangeListener listener) {
if (mListeners != null) {
mListeners.remove(listener);
}
}
/**
* Interface for receiving updates when the view's visibility changes
*/
public interface VisibilityChangeListener {
/**
* Method called when the visibility of this view has changed
* @param isVisible true if the view is now visible
*/
void onAggregatedVisibilityChanged(boolean isVisible);
}
}

View File

@@ -39,7 +39,6 @@ import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.MediaNotificationView;
import com.android.systemui.Dependency;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.TransformableView;
@@ -68,7 +67,6 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
private View mSeekBarView;
private Context mContext;
private MetricsLogger mMetricsLogger;
private boolean mIsViewVisible;
@VisibleForTesting
protected SeekBar.OnSeekBarChangeListener mSeekListener =
@@ -90,33 +88,11 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
}
};
MediaNotificationView.VisibilityChangeListener mVisibilityListener =
new MediaNotificationView.VisibilityChangeListener() {
@Override
public void onAggregatedVisibilityChanged(boolean isVisible) {
mIsViewVisible = isVisible;
if (isVisible) {
// Restart timer if we're currently playing and didn't already have one going
PlaybackState state = mMediaController.getPlaybackState();
if (state != null && state.getState() == PlaybackState.STATE_PLAYING
&& mSeekBarTimer == null && mSeekBarView != null
&& mSeekBarView.getVisibility() != View.GONE) {
startTimer();
}
} else {
clearTimer();
}
}
};
private MediaController.Callback mMediaCallback = new MediaController.Callback() {
@Override
public void onSessionDestroyed() {
clearTimer();
mMediaController.unregisterCallback(this);
if (mView instanceof MediaNotificationView) {
((MediaNotificationView) mView).removeVisibilityListener(mVisibilityListener);
}
}
@Override
@@ -150,16 +126,10 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
mContext = ctx;
mMediaManager = Dependency.get(NotificationMediaManager.class);
mMetricsLogger = Dependency.get(MetricsLogger.class);
if (mView instanceof MediaNotificationView) {
MediaNotificationView mediaView = (MediaNotificationView) mView;
mediaView.addVisibilityListener(mVisibilityListener);
}
}
private void resolveViews() {
mActions = mView.findViewById(com.android.internal.R.id.media_actions);
mIsViewVisible = mView.isShown();
final MediaSession.Token token = mRow.getEntry().notification.getNotification().extras
.getParcelable(Notification.EXTRA_MEDIA_SESSION);
@@ -238,19 +208,18 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
private void startTimer() {
clearTimer();
if (mIsViewVisible) {
mSeekBarTimer = new Timer(true /* isDaemon */);
mSeekBarTimer.schedule(new TimerTask() {
@Override
public void run() {
mHandler.post(mOnUpdateTimerTick);
}
}, 0, PROGRESS_UPDATE_INTERVAL);
}
mSeekBarTimer = new Timer(true /* isDaemon */);
mSeekBarTimer.schedule(new TimerTask() {
@Override
public void run() {
mHandler.post(mOnUpdateTimerTick);
}
}, 0, PROGRESS_UPDATE_INTERVAL);
}
private void clearTimer() {
if (mSeekBarTimer != null) {
// TODO: also trigger this when the notification panel is collapsed
mSeekBarTimer.cancel();
mSeekBarTimer.purge();
mSeekBarTimer = null;