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 0288454bb..91ec5879e 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,6 +318,7 @@ 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 f2772e18e..d677966a5 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 @@ -637,6 +637,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); + mBinding.control.seek.reset(); mViewModel.getUrl(mChannel); mPlayers.clear(); showProgress(); @@ -711,6 +712,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick switch (event.getState()) { case 0: setTrackVisible(false); + 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 5593223da..8478ba744 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 @@ -822,6 +822,7 @@ 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); @@ -1154,6 +1155,7 @@ 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 056fa3e31..f307cd2a5 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 @@ -45,25 +45,19 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen public CustomSeekView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); LayoutInflater.from(context).inflate(R.layout.view_control_seek, this); - initView(); - initEvent(); - start(); + init(); } - private void initView() { + private void init() { + timeBar = findViewById(R.id.timeBar); positionView = findViewById(R.id.position); durationView = findViewById(R.id.duration); - timeBar = findViewById(R.id.timeBar); runnable = this::updateProgress; - } - - private void initEvent() { timeBar.addListener(this); + reset(); } public void setListener(Players player) { - positionView.setText(player.stringToTime(0)); - durationView.setText(player.stringToTime(0)); this.player = player; } @@ -77,6 +71,14 @@ public class CustomSeekView extends FrameLayout implements TimeBar.OnScrubListen post(runnable); } + public void reset() { + timeBar.setPosition(0); + timeBar.setDuration(0); + removeCallbacks(runnable); + positionView.setText(player.stringToTime(0)); + durationView.setText(player.stringToTime(0)); + } + private void updateProgress() { if (player.isRelease()) return; long duration = player.getDuration(); 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 1e09eaa6f..92b28a26a 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 @@ -690,6 +690,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); + mBinding.control.seek.reset(); mViewModel.getUrl(mChannel); mPlayers.clear(); showProgress(); @@ -775,6 +776,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List switch (event.getState()) { case 0: setTrackVisible(false); + 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 6f686ba5b..8fa6510cc 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 @@ -813,6 +813,7 @@ 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); @@ -1173,6 +1174,7 @@ 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;