From 0d2dbb165dbefe9bab91d1b10111c34d354ec31f Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 17 Aug 2016 09:27:51 -0700 Subject: [PATCH] Demo app bug fixes - Restore position to start of period if period is not seekable, rather than not at all. - Get the correct window when saving position. - Disable position restore in onNewIntent. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=130527704 --- .../exoplayer2/demo/PlayerActivity.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index cdfc659cff..e44330135b 100644 --- a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -127,7 +127,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi private boolean playerNeedsSource; private boolean shouldRestorePosition; - private int playerPeriodIndex; + private int playerPeriod; private long playerPosition; // Activity lifecycle @@ -163,7 +163,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi @Override public void onNewIntent(Intent intent) { releasePlayer(); - playerPosition = 0; + shouldRestorePosition = false; setIntent(intent); } @@ -281,7 +281,11 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi player.setVideoListener(this); player.setVideoSurfaceHolder(surfaceView.getHolder()); if (shouldRestorePosition) { - player.seekInPeriod(playerPeriodIndex, playerPosition); + if (playerPosition == -1) { + player.seekToDefaultPositionForPeriod(playerPeriod); + } else { + player.seekInPeriod(playerPeriod, playerPosition); + } } player.setPlayWhenReady(true); mediaController.setMediaPlayer(new PlayerControl(player)); @@ -370,14 +374,14 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi shutterView.setVisibility(View.VISIBLE); debugViewHelper.stop(); debugViewHelper = null; - playerPeriodIndex = player.getCurrentPeriodIndex(); - playerPosition = player.getCurrentPositionInPeriod(); shouldRestorePosition = false; Timeline playerTimeline = player.getCurrentTimeline(); if (playerTimeline != null) { - Window window = playerTimeline.getWindow(playerPeriodIndex); - if (window.isSeekable && !window.isDynamic) { + Window window = playerTimeline.getWindow(player.getCurrentWindowIndex()); + if (!window.isDynamic) { shouldRestorePosition = true; + playerPeriod = player.getCurrentPeriodIndex(); + playerPosition = window.isSeekable ? player.getCurrentPositionInPeriod() : -1; } } player.release();