use of androidx.media3.common.Player.Events in project media by androidx.
the class MediaControllerStateMaskingWithMediaSessionCompatTest method setPlayWhenReady.
@Test
public void setPlayWhenReady() throws Exception {
boolean testPlayWhenReady = true;
boolean testIsPlaying = true;
Events testEvents = new Events(new FlagSet.Builder().addAll(EVENT_PLAY_WHEN_READY_CHANGED, EVENT_IS_PLAYING_CHANGED).build());
session.setPlaybackState(new PlaybackStateCompat.Builder().setState(PlaybackStateCompat.STATE_PAUSED, /* position= */
0, /* playbackSpeed= */
1.0f).build());
MediaController controller = controllerTestRule.createController(session.getSessionToken());
CountDownLatch latch = new CountDownLatch(3);
AtomicBoolean playWhenReadyFromCallbackRef = new AtomicBoolean();
AtomicBoolean isPlayingFromCallbackRef = new AtomicBoolean();
AtomicReference<Player.Events> onEventsRef = new AtomicReference<>();
Player.Listener listener = new Player.Listener() {
@Override
public void onPlayWhenReadyChanged(boolean playWhenReady, @Player.PlayWhenReadyChangeReason int reason) {
playWhenReadyFromCallbackRef.set(playWhenReady);
latch.countDown();
}
@Override
public void onIsPlayingChanged(boolean isPlaying) {
isPlayingFromCallbackRef.set(isPlaying);
latch.countDown();
}
@Override
public void onEvents(Player player, Player.Events events) {
onEventsRef.set(events);
latch.countDown();
}
};
threadTestRule.getHandler().postAndSync(() -> controller.addListener(listener));
AtomicBoolean playWhenReadyFromGetterRef = new AtomicBoolean();
AtomicBoolean isPlayingFromGetterRef = new AtomicBoolean();
threadTestRule.getHandler().postAndSync(() -> {
controller.setPlayWhenReady(testPlayWhenReady);
playWhenReadyFromGetterRef.set(controller.getPlayWhenReady());
isPlayingFromGetterRef.set(controller.isPlaying());
});
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(playWhenReadyFromCallbackRef.get()).isEqualTo(testPlayWhenReady);
assertThat(isPlayingFromCallbackRef.get()).isEqualTo(testIsPlaying);
assertThat(onEventsRef.get()).isEqualTo(testEvents);
assertThat(playWhenReadyFromGetterRef.get()).isEqualTo(testPlayWhenReady);
assertThat(isPlayingFromGetterRef.get()).isEqualTo(testIsPlaying);
}
use of androidx.media3.common.Player.Events in project media by androidx.
the class MediaControllerStateMaskingWithMediaSessionCompatTest method removeMediaItems_includeCurrentMediaItem_movesCurrentItem.
@Test
public void removeMediaItems_includeCurrentMediaItem_movesCurrentItem() throws Exception {
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(5);
List<QueueItem> queue = MediaUtils.convertToQueueItemList(mediaItems);
long testPosition = 200L;
int initialMediaItemIndex = 2;
MediaItem testCurrentMediaItem = mediaItems.get(initialMediaItemIndex);
session.setPlaybackState(new PlaybackStateCompat.Builder().setState(PlaybackStateCompat.STATE_PAUSED, testPosition, /* playbackSpeed= */
1.0f).setActiveQueueItemId(queue.get(initialMediaItemIndex).getQueueId()).build());
session.setQueue(queue);
int testFromIndex = 1;
int testToIndex = 3;
List<MediaItem> testMediaItems = new ArrayList<>(mediaItems.subList(0, testFromIndex));
testMediaItems.addAll(mediaItems.subList(testToIndex, mediaItems.size()));
int testCurrentMediaItemIndex = testFromIndex;
Events testEvents = new Events(new FlagSet.Builder().addAll(EVENT_TIMELINE_CHANGED).build());
MediaController controller = controllerTestRule.createController(session.getSessionToken());
CountDownLatch latch = new CountDownLatch(2);
AtomicReference<Timeline> timelineFromParamRef = new AtomicReference<>();
AtomicInteger timelineChangedReasonRef = new AtomicInteger();
AtomicReference<Player.Events> onEventsRef = new AtomicReference<>();
Player.Listener listener = new Player.Listener() {
@Override
public void onTimelineChanged(Timeline timeline, @Player.TimelineChangeReason int reason) {
timelineFromParamRef.set(timeline);
timelineChangedReasonRef.set(reason);
latch.countDown();
}
@Override
public void onEvents(Player player, Player.Events events) {
onEventsRef.set(events);
latch.countDown();
}
};
threadTestRule.getHandler().postAndSync(() -> controller.addListener(listener));
AtomicInteger currentMediaItemIndexRef = new AtomicInteger();
AtomicReference<Timeline> timelineFromGetterRef = new AtomicReference<>();
threadTestRule.getHandler().postAndSync(() -> {
controller.removeMediaItems(testFromIndex, testToIndex);
currentMediaItemIndexRef.set(controller.getCurrentMediaItemIndex());
timelineFromGetterRef.set(controller.getCurrentTimeline());
});
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
MediaTestUtils.assertTimelineContains(timelineFromParamRef.get(), testMediaItems);
assertThat(timelineChangedReasonRef.get()).isEqualTo(TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED);
assertThat(onEventsRef.get()).isEqualTo(testEvents);
assertThat(currentMediaItemIndexRef.get()).isEqualTo(testCurrentMediaItemIndex);
MediaTestUtils.assertTimelineContains(timelineFromGetterRef.get(), testMediaItems);
}
use of androidx.media3.common.Player.Events in project media by androidx.
the class MediaControllerStateMaskingWithMediaSessionCompatTest method setShuffleModeEnabled.
@Test
public void setShuffleModeEnabled() throws Exception {
boolean testShuffleModeEnabled = true;
Events testEvents = new Events(new FlagSet.Builder().addAll(EVENT_SHUFFLE_MODE_ENABLED_CHANGED).build());
MediaController controller = controllerTestRule.createController(session.getSessionToken());
CountDownLatch latch = new CountDownLatch(2);
AtomicBoolean shuffleModeEnabledFromCallbackRef = new AtomicBoolean();
AtomicReference<Player.Events> onEventsRef = new AtomicReference<>();
Player.Listener listener = new Player.Listener() {
@Override
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
shuffleModeEnabledFromCallbackRef.set(shuffleModeEnabled);
latch.countDown();
}
@Override
public void onEvents(Player player, Player.Events events) {
onEventsRef.set(events);
latch.countDown();
}
};
threadTestRule.getHandler().postAndSync(() -> controller.addListener(listener));
AtomicBoolean shuffleModeEnabledFromGetterRef = new AtomicBoolean();
threadTestRule.getHandler().postAndSync(() -> {
controller.setShuffleModeEnabled(testShuffleModeEnabled);
shuffleModeEnabledFromGetterRef.set(controller.getShuffleModeEnabled());
});
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(shuffleModeEnabledFromCallbackRef.get()).isEqualTo(testShuffleModeEnabled);
assertThat(onEventsRef.get()).isEqualTo(testEvents);
assertThat(shuffleModeEnabledFromGetterRef.get()).isEqualTo(testShuffleModeEnabled);
}
use of androidx.media3.common.Player.Events in project media by androidx.
the class MediaControllerStateMaskingWithMediaSessionCompatTest method prepare.
@Test
public void prepare() throws Exception {
int testPlaybackState = Player.STATE_ENDED;
Events testEvents = new Events(new FlagSet.Builder().addAll(EVENT_PLAYBACK_STATE_CHANGED).build());
MediaController controller = controllerTestRule.createController(session.getSessionToken());
CountDownLatch latch = new CountDownLatch(2);
AtomicInteger playbackStateFromCallbackRef = new AtomicInteger();
AtomicReference<Player.Events> onEventsRef = new AtomicReference<>();
Player.Listener listener = new Player.Listener() {
@Override
public void onPlaybackStateChanged(int playbackState) {
playbackStateFromCallbackRef.set(playbackState);
latch.countDown();
}
@Override
public void onEvents(Player player, Player.Events events) {
onEventsRef.set(events);
latch.countDown();
}
};
threadTestRule.getHandler().postAndSync(() -> controller.addListener(listener));
AtomicInteger playbackStateFromGetterRef = new AtomicInteger();
AtomicReference<PlaybackException> playerErrorRef = new AtomicReference<>();
threadTestRule.getHandler().postAndSync(() -> {
controller.prepare();
playbackStateFromGetterRef.set(controller.getPlaybackState());
playerErrorRef.set(controller.getPlayerError());
});
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(playbackStateFromCallbackRef.get()).isEqualTo(testPlaybackState);
assertThat(onEventsRef.get()).isEqualTo(testEvents);
assertThat(playbackStateFromGetterRef.get()).isEqualTo(testPlaybackState);
assertThat(playerErrorRef.get()).isNull();
}
Aggregations