diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaUtils.java b/libraries/session/src/main/java/androidx/media3/session/MediaUtils.java index 69b2d7d4d9..0fda511e7c 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaUtils.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaUtils.java @@ -1427,13 +1427,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; return new Pair<>(mergedPlayerInfo, mergedBundlingExclusions); } - private static byte[] convertToByteArray(Bitmap bitmap) throws IOException { - try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { - bitmap.compress(Bitmap.CompressFormat.PNG, /* ignored */ 0, stream); - return stream.toByteArray(); - } - } - + /** Generates an array of {@code n} indices. */ public static int[] generateUnshuffledIndices(int n) { int[] indices = new int[n]; for (int i = 0; i < n; i++) { @@ -1442,6 +1436,10 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; return indices; } + /** + * Calculates the buffered percentage of the given buffered position and the duration in + * milliseconds. + */ public static int calculateBufferedPercentage(long bufferedPositionMs, long durationMs) { return bufferedPositionMs == C.TIME_UNSET || durationMs == C.TIME_UNSET ? 0 @@ -1450,8 +1448,15 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; : Util.constrainValue((int) ((bufferedPositionMs * 100) / durationMs), 0, 100); } + /** + * Sets media items with start index and position for the given {@link Player} by honoring the + * available commands. + * + * @param player The player to set the media items. + * @param mediaItemsWithStartPosition The media items, the index and the position to set. + */ public static void setMediaItemsWithStartIndexAndPosition( - PlayerWrapper player, MediaSession.MediaItemsWithStartPosition mediaItemsWithStartPosition) { + Player player, MediaSession.MediaItemsWithStartPosition mediaItemsWithStartPosition) { if (mediaItemsWithStartPosition.startIndex == C.INDEX_UNSET) { if (player.isCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { player.setMediaItems(mediaItemsWithStartPosition.mediaItems, /* resetPosition= */ true); @@ -1459,17 +1464,22 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; player.setMediaItem( mediaItemsWithStartPosition.mediaItems.get(0), /* resetPosition= */ true); } - } else { - if (player.isCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { - player.setMediaItems( - mediaItemsWithStartPosition.mediaItems, - mediaItemsWithStartPosition.startIndex, - mediaItemsWithStartPosition.startPositionMs); - } else if (!mediaItemsWithStartPosition.mediaItems.isEmpty()) { - player.setMediaItem( - mediaItemsWithStartPosition.mediaItems.get(0), - mediaItemsWithStartPosition.startPositionMs); - } + } else if (player.isCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + player.setMediaItems( + mediaItemsWithStartPosition.mediaItems, + mediaItemsWithStartPosition.startIndex, + mediaItemsWithStartPosition.startPositionMs); + } else if (!mediaItemsWithStartPosition.mediaItems.isEmpty()) { + player.setMediaItem( + mediaItemsWithStartPosition.mediaItems.get(0), + mediaItemsWithStartPosition.startPositionMs); + } + } + + private static byte[] convertToByteArray(Bitmap bitmap) throws IOException { + try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { + bitmap.compress(Bitmap.CompressFormat.PNG, /* ignored */ 0, stream); + return stream.toByteArray(); } }