diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index cf637989c..aa62875f3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -318,7 +318,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List case 0: setTrackVisible(false); mClock.setCallback(this); - mBinding.control.seek.start(); setState(RenderState.PREPARING); break; case Player.STATE_IDLE: diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 57763217c..7ae967e39 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -612,7 +612,6 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); - mBinding.control.seek.reset(); mViewModel.getUrl(mChannel); mPlayers.clear(); showProgress(); @@ -689,7 +688,6 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP case 0: setTrackVisible(false); mClock.setCallback(this); - mBinding.control.seek.start(); break; case Player.STATE_IDLE: break; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index e069945d0..6fc0552c2 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -922,7 +922,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void onReset(boolean replay) { mClock.setCallback(null); - mBinding.control.seek.reset(); if (mFlagAdapter.size() == 0) return; if (mEpisodeAdapter.size() == 0) return; getPlayer(getFlag(), getEpisode(), replay); @@ -1287,7 +1286,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List setInitTrack(true); setTrackVisible(false); mClock.setCallback(this); - mBinding.control.seek.start(); break; case Player.STATE_IDLE: break; diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomSeekView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomSeekView.java index 6cb3ffc0d..afbb39abb 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomSeekView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomSeekView.java @@ -26,7 +26,7 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen private TextView durationView; private DefaultTimeBar timeBar; - private Runnable runnable; + private Runnable refresh; private Players player; private long currentDuration; @@ -46,35 +46,27 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen super(context, attrs, defStyleAttr); LayoutInflater.from(context).inflate(R.layout.view_control_seek, this); init(); + start(); } private void init() { - timeBar = findViewById(R.id.timeBar); positionView = findViewById(R.id.position); durationView = findViewById(R.id.duration); - runnable = this::updateProgress; + timeBar = findViewById(R.id.timeBar); timeBar.addListener(this); - reset(); + refresh = this::refresh; } public void setListener(Players player) { this.player = player; } - public void reset() { - timeBar.setPosition(0); - timeBar.setDuration(0); - removeCallbacks(runnable); - positionView.setText("00:00"); - durationView.setText("00:00"); + private void start() { + removeCallbacks(refresh); + post(refresh); } - public void start() { - removeCallbacks(runnable); - post(runnable); - } - - private void updateProgress() { + private void refresh() { if (player.isRelease()) return; long duration = player.getDuration(); long position = player.getPosition(); @@ -97,11 +89,17 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen if (bufferedChanged) { timeBar.setBufferedPosition(buffered); } - removeCallbacks(runnable); + if (player.isEmpty()) { + timeBar.setPosition(0); + timeBar.setDuration(0); + positionView.setText("00:00"); + durationView.setText("00:00"); + } + removeCallbacks(refresh); if (player.isPlaying()) { - postDelayed(runnable, delayMs(position)); + postDelayed(refresh, delayMs(position)); } else { - postDelayed(runnable, MAX_UPDATE_INTERVAL_MS); + postDelayed(refresh, MAX_UPDATE_INTERVAL_MS); } } @@ -132,13 +130,13 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen private void seekToTimeBarPosition(long positionMs) { player.seekTo(positionMs); - updateProgress(); + refresh(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - removeCallbacks(runnable); + removeCallbacks(refresh); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index ea92529b3..d00d70775 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -661,7 +661,6 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); - mBinding.control.seek.reset(); mViewModel.getUrl(mChannel); mPlayers.clear(); showProgress(); @@ -749,7 +748,6 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom case 0: setTrackVisible(false); mClock.setCallback(this); - mBinding.control.seek.start(); break; case Player.STATE_IDLE: break; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 132804c87..553a62f41 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -842,7 +842,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void onReset(boolean replay) { mClock.setCallback(null); - mBinding.control.seek.reset(); if (mFlagAdapter.isEmpty()) return; if (mEpisodeAdapter.isEmpty()) return; getPlayer(getFlag(), getEpisode(), replay); @@ -1244,7 +1243,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo setInitTrack(true); setTrackVisible(false); mClock.setCallback(this); - mBinding.control.seek.start(); break; case Player.STATE_IDLE: break;