Make mapping of STATE_IDLE configurable

PiperOrigin-RevId: 413922123
This commit is contained in:
bachinger 2021-12-03 14:35:10 +00:00 committed by Oliver Woodman
parent b7296bc363
commit bbec6bcec2

View File

@ -467,6 +467,7 @@ public final class MediaSessionConnector {
private boolean metadataDeduplicationEnabled; private boolean metadataDeduplicationEnabled;
private boolean dispatchUnsupportedActionsEnabled; private boolean dispatchUnsupportedActionsEnabled;
private boolean clearMediaItemsOnStop; private boolean clearMediaItemsOnStop;
private boolean mapIdleToStopped;
/** /**
* Creates an instance. * Creates an instance.
@ -709,6 +710,15 @@ public final class MediaSessionConnector {
this.clearMediaItemsOnStop = clearMediaItemsOnStop; this.clearMediaItemsOnStop = clearMediaItemsOnStop;
} }
/**
* Sets whether {@link Player#STATE_IDLE} should be mapped to {@link
* PlaybackStateCompat#STATE_STOPPED}. The default is false {@link Player#STATE_IDLE} which maps
* to {@link PlaybackStateCompat#STATE_NONE}.
*/
public void setMapStateIdleToSessionStateStopped(boolean mapIdleToStopped) {
this.mapIdleToStopped = mapIdleToStopped;
}
/** /**
* Sets whether {@link MediaMetadataProvider#sameAs(MediaMetadataCompat, MediaMetadataCompat)} * Sets whether {@link MediaMetadataProvider#sameAs(MediaMetadataCompat, MediaMetadataCompat)}
* should be consulted before calling {@link MediaSessionCompat#setMetadata(MediaMetadataCompat)}. * should be consulted before calling {@link MediaSessionCompat#setMetadata(MediaMetadataCompat)}.
@ -984,7 +994,7 @@ public final class MediaSessionConnector {
player.seekTo(mediaItemIndex, positionMs); player.seekTo(mediaItemIndex, positionMs);
} }
private static int getMediaSessionPlaybackState( private int getMediaSessionPlaybackState(
@Player.State int exoPlayerPlaybackState, boolean playWhenReady) { @Player.State int exoPlayerPlaybackState, boolean playWhenReady) {
switch (exoPlayerPlaybackState) { switch (exoPlayerPlaybackState) {
case Player.STATE_BUFFERING: case Player.STATE_BUFFERING:
@ -997,7 +1007,9 @@ public final class MediaSessionConnector {
return PlaybackStateCompat.STATE_STOPPED; return PlaybackStateCompat.STATE_STOPPED;
case Player.STATE_IDLE: case Player.STATE_IDLE:
default: default:
return PlaybackStateCompat.STATE_NONE; return mapIdleToStopped
? PlaybackStateCompat.STATE_STOPPED
: PlaybackStateCompat.STATE_NONE;
} }
} }