Ignore playback state update if state is the same
Bug: 134158997
Test: Manual
Change-Id: I15e63e3f53b87f0cab3c8833698d3d58daa1ae0f
(cherry picked from commit 37584e87225046236c24b6df172c4d7115c2404f)
diff --git a/service/src/com/android/car/CarMediaService.java b/service/src/com/android/car/CarMediaService.java
index 5728bf2..bda7fbc 100644
--- a/service/src/com/android/car/CarMediaService.java
+++ b/service/src/com/android/car/CarMediaService.java
@@ -51,7 +51,6 @@
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.List;
@@ -273,9 +272,12 @@
private class MediaControllerCallback extends MediaController.Callback {
private final MediaController mMediaController;
+ private int mPreviousPlaybackState;
private MediaControllerCallback(MediaController mediaController) {
mMediaController = mediaController;
+ PlaybackState state = mediaController.getPlaybackState();
+ mPreviousPlaybackState = (state == null) ? PlaybackState.STATE_NONE : state.getState();
}
private void register() {
@@ -288,10 +290,11 @@
@Override
public void onPlaybackStateChanged(@Nullable PlaybackState state) {
- if (state.getState() == PlaybackState.STATE_PLAYING) {
- updatePrimaryMediaSourceWithCurrentlyPlaying(
- Collections.singletonList(mMediaController));
+ if (state.getState() == PlaybackState.STATE_PLAYING
+ && state.getState() != mPreviousPlaybackState) {
+ setPrimaryMediaSource(mMediaController.getPackageName());
}
+ mPreviousPlaybackState = state.getState();
}
}