From c8443eada101524248a112a6f36a03bdf744709e Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 9 Feb 2025 01:02:53 +0800 Subject: [PATCH] Fix bug --- .../android/tv/ui/activity/VideoActivity.java | 32 +++++++++++-------- .../android/tv/ui/activity/VideoActivity.java | 21 +++++++----- .../android/tv/ui/dialog/ControlDialog.java | 2 +- 3 files changed, 32 insertions(+), 23 deletions(-) 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 db4656c1e..ec69c3b95 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 @@ -683,30 +683,34 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void checkNext() { - if (mHistory.isRevPlay()) onPrev(); - else onNext(); + checkNext(true); + } + + private void checkNext(boolean notify) { + if (mHistory.isRevPlay()) onPrev(notify); + else onNext(notify); } private void checkPrev() { - if (mHistory.isRevPlay()) onNext(); - else onPrev(); + if (mHistory.isRevPlay()) onNext(true); + else onPrev(true); } - private void onNext() { + private void onNext(boolean notify) { int current = getEpisodePosition(); int max = mEpisodeAdapter.size() - 1; current = ++current > max ? max : current; Episode item = (Episode) mEpisodeAdapter.get(current); - if (item.isActivated()) Notify.show(mHistory.isRevPlay() ? R.string.error_play_prev : R.string.error_play_next); - else setEpisodeActivated(item); + if (!item.isActivated()) setEpisodeActivated(item); + else if (notify) Notify.show(mHistory.isRevPlay() ? R.string.error_play_prev : R.string.error_play_next); } - private void onPrev() { + private void onPrev(boolean notify) { int current = getEpisodePosition(); current = --current < 0 ? 0 : current; Episode item = (Episode) mEpisodeAdapter.get(current); - if (item.isActivated()) Notify.show(mHistory.isRevPlay() ? R.string.error_play_next : R.string.error_play_prev); - else setEpisodeActivated(item); + if (!item.isActivated()) setEpisodeActivated(item); + else if (notify) Notify.show(mHistory.isRevPlay() ? R.string.error_play_next : R.string.error_play_prev); } private void onScale() { @@ -1000,7 +1004,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mHistory.setDuration(duration = mPlayers.getDuration()); if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update()); if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) { - checkEnded(); + checkEnded(false); } } @@ -1041,7 +1045,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List hideProgress(); break; case Player.STATE_ENDED: - checkEnded(); + checkEnded(true); break; case PlayerEvent.TRACK: setMetadata(); @@ -1060,12 +1064,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List if (mHistory != null) mPlayers.seekTo(Math.max(mHistory.getOpening(), mHistory.getPosition())); } - private void checkEnded() { + private void checkEnded(boolean notify) { if (mBinding.control.loop.isActivated()) { onReset(true); } else { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - checkNext(); + checkNext(notify); } } 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 c908d589b..2ccbca0cd 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 @@ -554,6 +554,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mFlagAdapter.toggle(item); notifyItemChanged(mEpisodeAdapter); mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition()); + if (isFullscreen()) Notify.show(getString(R.string.play_ready, item.getName())); onRefresh(); } @@ -677,17 +678,21 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void checkNext() { + checkNext(true); + } + + private void checkNext(boolean notify) { setR1Callback(); Episode item = mEpisodeAdapter.getNext(); - if (item.isActivated()) Notify.show(R.string.error_play_next); - else onItemClick(item); + if (!item.isActivated()) onItemClick(item); + else if (notify) Notify.show(R.string.error_play_next); } private void checkPrev() { setR1Callback(); Episode item = mEpisodeAdapter.getPrev(); - if (item.isActivated()) Notify.show(R.string.error_play_prev); - else onItemClick(item); + if (!item.isActivated()) onItemClick(item); + else Notify.show(R.string.error_play_prev); } private void onSetting() { @@ -1038,7 +1043,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mHistory.setDuration(duration = mPlayers.getDuration()); if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update()); if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) { - checkEnded(); + checkEnded(false); } } @@ -1086,7 +1091,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo checkPlayImg(mPlayers.isPlaying()); break; case Player.STATE_ENDED: - checkEnded(); + checkEnded(true); break; case PlayerEvent.TRACK: setMetadata(); @@ -1113,13 +1118,13 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } } - private void checkEnded() { + private void checkEnded(boolean notify) { if (mBinding.control.action.loop.isActivated()) { onReset(true); } else { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); checkPlayImg(false); - checkNext(); + checkNext(notify); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index 51ec9fb11..0e64cf60a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -107,8 +107,8 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.text.setOnClickListener(v -> dismiss(parent.control.action.text)); binding.audio.setOnClickListener(v -> dismiss(parent.control.action.audio)); binding.video.setOnClickListener(v -> dismiss(parent.control.action.video)); + binding.player.setOnClickListener(v -> dismiss(parent.control.action.player)); binding.loop.setOnClickListener(v -> active(binding.loop, parent.control.action.loop)); - binding.player.setOnClickListener(v -> click(binding.player, parent.control.action.player)); binding.decode.setOnClickListener(v -> click(binding.decode, parent.control.action.decode)); binding.ending.setOnClickListener(v -> click(binding.ending, parent.control.action.ending)); binding.opening.setOnClickListener(v -> click(binding.opening, parent.control.action.opening));