I have a Pager with list of videos' URIs. The issue is ExoPlayer don't playing videos after they were swiped forward and back. At first time videos play normally, but after swiping they don't. Any suggestions?
Page:
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/videoMediaViewer"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:controller_layout_id="@layout/exo_player_controls"
app:resize_mode="fill"/>
Pager callback:
private val pageChangeListener = object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageSelected(position: Int) {
viewModel.media.value?.get(position)?.let { media ->
if (media.type == MediaType.Video)
setVideoForPosition(position, Uri.parse(media.links.original))
}
}
override fun onPageScrollStateChanged(state: Int) {}
}
private fun setVideoForPosition(position: Int, uri: Uri){
binding.carouselView.containerViewPager.get(position).findViewById<PlayerView>(R.id.videoMediaViewer)?.also {
if (it.player == null) it.player = exoPlayer
if (exoPlayer.isPlaying) exoPlayer.stop()
exoPlayer.setMediaItem(MediaItem.fromUri(uri), 0)
exoPlayer.prepare()
}
}