From 449b2c8f8c00d54a1f4455ac2fa090903de144ae Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 20 May 2025 18:09:46 +0800 Subject: [PATCH] Fix opening and ending bug --- .../android/tv/ui/activity/VideoActivity.java | 29 +++++++++--------- .../android/tv/ui/activity/VideoActivity.java | 30 +++++++++++-------- 2 files changed, 32 insertions(+), 27 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 190e815c5..89f2500e1 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 @@ -783,17 +783,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void onOpening() { long current = mPlayers.getPosition(); long duration = mPlayers.getDuration(); - if (current > TimeUnit.MINUTES.toMillis(10)) return; - if (current < 0 || duration < 0 || current > duration / 2) return; + if (current < 0 || duration < 0) return; + if (current > TimeUnit.MINUTES.toMillis(5)) return; setOpening(current); } private void onOpeningAdd() { - long current = mPlayers.getPosition(); - long duration = mPlayers.getDuration(); - if (current < 0 || duration < 0) return; - if (mHistory.getOpening() < 0) mHistory.setOpening(0); - setOpening(Math.min(mHistory.getOpening() + 1000, duration / 2)); + setOpening(Math.max(0, mHistory.getOpening() + 1000)); } private void onOpeningSub() { @@ -813,16 +809,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void onEnding() { long current = mPlayers.getPosition(); long duration = mPlayers.getDuration(); - if (duration - current > TimeUnit.MINUTES.toMillis(10)) return; - if (current < 0 || duration < 0 || current < duration / 2) return; + if (current < 0 || duration < 0) return; + if (duration - current > TimeUnit.MINUTES.toMillis(5)) return; setEnding(duration - current); } private void onEndingAdd() { - long current = mPlayers.getPosition(); - long duration = mPlayers.getDuration(); - if (current < 0 || duration < 0) return; - setEnding(Math.min(duration / 2, mHistory.getEnding() + 1000)); + setEnding(Math.max(0, mHistory.getEnding() + 1000)); } private void onEndingSub() { @@ -1348,8 +1341,14 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override public void onKeyUp() { long current = mPlayers.getPosition(); - long half = mPlayers.getDuration() / 2; - showControl(current < half ? mBinding.control.opening : mBinding.control.ending); + long duration = mPlayers.getDuration(); + if (duration - current < TimeUnit.MINUTES.toMillis(5)) { + showControl(mBinding.control.ending); + } else if (current < TimeUnit.MINUTES.toMillis(5)) { + showControl(mBinding.control.opening); + } else { + showControl(getFocus2()); + } } @Override 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 bdad85358..87c854873 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 @@ -803,37 +803,43 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void onEnding() { long current = mPlayers.getPosition(); long duration = mPlayers.getDuration(); - if (duration - current > TimeUnit.MINUTES.toMillis(10)) return; - if (current < 0 || duration < 0 || current < duration / 2) return; - mHistory.setEnding(duration - current); - mBinding.control.action.ending.setText(mPlayers.stringToTime(mHistory.getEnding())); + if (current < 0 || duration < 0) return; + if (duration - current > TimeUnit.MINUTES.toMillis(5)) return; + setEnding(duration - current); setR1Callback(); } private boolean onEndingReset() { - mHistory.setEnding(0); - mBinding.control.action.ending.setText(R.string.play_ed); setR1Callback(); + setEnding(0); return true; } + private void setEnding(long ending) { + mHistory.setEnding(ending); + mBinding.control.action.ending.setText(ending <= 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); + } + private void onOpening() { long current = mPlayers.getPosition(); long duration = mPlayers.getDuration(); - if (current > TimeUnit.MINUTES.toMillis(10)) return; - if (current < 0 || duration < 0 || current > duration / 2) return; - mHistory.setOpening(current); - mBinding.control.action.opening.setText(mPlayers.stringToTime(mHistory.getOpening())); + if (current < 0 || duration < 0) return; + if (current > TimeUnit.MINUTES.toMillis(5)) return; + setOpening(current); setR1Callback(); } private boolean onOpeningReset() { - mHistory.setOpening(0); - mBinding.control.action.opening.setText(R.string.play_op); setR1Callback(); + setOpening(0); return true; } + private void setOpening(long opening) { + mHistory.setOpening(opening); + mBinding.control.action.opening.setText(opening <= 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); + } + private void onEpisodes() { mDialogs.add(EpisodeListDialog.create(this).episodes(mEpisodeAdapter.getItems()).show()); }