From c765c47daff62fd2e0aced80a597509b1f27140a Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Tue, 28 Feb 2017 22:04:40 +0800 Subject: [PATCH] improved ExoPlayer position handling --- .../fragment/media/ExoPlayerPageFragment.kt | 71 ++++++++++++++++--- 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/media/ExoPlayerPageFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/media/ExoPlayerPageFragment.kt index c1ed8c243..3ccb04818 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/media/ExoPlayerPageFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/media/ExoPlayerPageFragment.kt @@ -30,12 +30,13 @@ import android.os.Handler import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.google.android.exoplayer2.DefaultLoadControl -import com.google.android.exoplayer2.ExoPlayerFactory +import com.google.android.exoplayer2.* import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory import com.google.android.exoplayer2.source.ExtractorMediaSource +import com.google.android.exoplayer2.source.TrackGroupArray import com.google.android.exoplayer2.trackselection.AdaptiveVideoTrackSelection import com.google.android.exoplayer2.trackselection.DefaultTrackSelector +import com.google.android.exoplayer2.trackselection.TrackSelectionArray import com.google.android.exoplayer2.upstream.DataSource import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory @@ -64,7 +65,54 @@ class ExoPlayerPageFragment : MediaViewerFragment(), IBaseFragment { + showProgress(true, 0f) + } + ExoPlayer.STATE_ENDED -> { + playbackCompleted = true + positionBackup = -1L + + // Reset position + playerView.player?.let { player -> + player.seekTo(0) + player.playWhenReady = false + } + + hideProgress() + } + ExoPlayer.STATE_READY -> { + playbackCompleted = playWhenReady + hideProgress() + } + else -> { + hideProgress() + } + } + } + + override fun onPositionDiscontinuity() { + } + + override fun onTimelineChanged(timeline: Timeline, manifest: Any?) { + } + + override fun onTracksChanged(trackGroups: TrackGroupArray, trackSelections: TrackSelectionArray) { + } + + } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) @@ -73,7 +121,7 @@ class ExoPlayerPageFragment : MediaViewerFragment(), IBaseFragment= 0) { + player.seekTo(positionBackup) + } + player.playWhenReady = !pausedByUser + player.addListener(playerListener) return@run player }