
Images are rendered into an ImageView (on top of the video shutter). The image view is set to the images emitted by ExoPlayer's ImageOutput and cleared when there is no longer a selected image track. In order to keep the existing behavior of video tracks to only clear the old output once the new first frame is rendered (avoiding short periods of black between playlist items), we have to reorder this code slightly to make it work for video and images. Both are treated in the same way. If both are enabled, video takes precedence. As the UI module only depends on the common module, we can't direcly add the ImageOutput to ExoPlayer. This is done via reflection if the provided Player is an ExoPlayer. #cherrypick PiperOrigin-RevId: 643320666
UI module
Provides UI components for media playback.
Getting the module
The easiest way to use the module is to add it as a gradle dependency:
implementation 'androidx.media3:media3-ui:1.X.X'
where 1.X.X
is the version, which must match the version of the other media
modules being used.
Alternatively, you can clone this GitHub project and depend on the module locally. Instructions for doing this can be found in the top level README.