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 9131005f8..71e012757 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 @@ -941,8 +941,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mHistory = mHistory == null ? createHistory(item) : mHistory; if (!TextUtils.isEmpty(getMark())) mHistory.setVodRemarks(getMark()); if (Setting.isIncognito() && mHistory.getKey().equals(getHistoryKey())) mHistory.delete(); - mBinding.control.opening.setText(mHistory.getOpening() == 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); - mBinding.control.ending.setText(mHistory.getEnding() == 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); + mBinding.control.opening.setText(mHistory.getOpening() <= 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); + mBinding.control.ending.setText(mHistory.getEnding() <= 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); mHistory.setVodPic(item.getVodPic()); setScale(getScale()); @@ -959,12 +959,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void updateHistory(Episode item, boolean replay) { replay = replay || !item.equals(mHistory.getEpisode()); - long position = replay ? C.TIME_UNSET : mHistory.getPosition(); - mHistory.setPosition(position); mHistory.setEpisodeUrl(item.getUrl()); mHistory.setVodRemarks(item.getName()); mHistory.setVodFlag(getFlag().getFlag()); mHistory.setCreateTime(System.currentTimeMillis()); + mHistory.setPosition(replay ? C.TIME_UNSET : mHistory.getPosition()); } private void checkKeep() { @@ -1059,7 +1058,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void setPosition() { - if (mHistory != null) mPlayers.seekTo(Math.max(mHistory.getOpening(), mHistory.getPosition())); + if (mHistory != null) mPlayers.seekTo(mHistory.getOpening() > 0 ? mHistory.getOpening() : mHistory.getPosition()); } private void checkEnded() { @@ -1237,9 +1236,9 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void onPlay() { - if (mHistory != null && mPlayers.isEnded()) mPlayers.seekTo(mHistory.getOpening()); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); if (!mPlayers.isEmpty() && mPlayers.isIdle()) mPlayers.prepare(); + if (mHistory != null && mPlayers.isEnded()) setPosition(); mPlayers.play(); hideCenter(); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index e37ff733d..2e2bcc221 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -4,6 +4,7 @@ import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; +import androidx.media3.common.C; import androidx.room.Entity; import androidx.room.PrimaryKey; @@ -71,6 +72,10 @@ public class History { public History() { this.speed = 1; this.scale = -1; + this.ending = C.TIME_UNSET; + this.opening = C.TIME_UNSET; + this.position = C.TIME_UNSET; + this.duration = C.TIME_UNSET; } @NonNull @@ -251,8 +256,8 @@ public class History { } private void checkParam(History item) { - if (getOpening() == 0) setOpening(item.getOpening()); - if (getEnding() == 0) setEnding(item.getEnding()); + if (getOpening() <= 0) setOpening(item.getOpening()); + if (getEnding() <= 0) setEnding(item.getEnding()); if (getSpeed() == 1) setSpeed(item.getSpeed()); } 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 d4da6e542..60c737a8c 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 @@ -972,8 +972,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mHistory = mHistory == null ? createHistory(item) : mHistory; if (!TextUtils.isEmpty(getMark())) mHistory.setVodRemarks(getMark()); if (Setting.isIncognito() && mHistory.getKey().equals(getHistoryKey())) mHistory.delete(); - mBinding.control.action.opening.setText(mHistory.getOpening() == 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); - mBinding.control.action.ending.setText(mHistory.getEnding() == 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); + mBinding.control.action.opening.setText(mHistory.getOpening() <= 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); + mBinding.control.action.ending.setText(mHistory.getEnding() <= 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); mHistory.setVodPic(item.getVodPic()); setScale(getScale()); @@ -990,12 +990,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void updateHistory(Episode item, boolean replay) { replay = replay || !item.equals(mHistory.getEpisode()); - long position = replay ? C.TIME_UNSET : mHistory.getPosition(); - mHistory.setPosition(position); mHistory.setEpisodeUrl(item.getUrl()); mHistory.setVodRemarks(item.getName()); mHistory.setVodFlag(getFlag().getFlag()); mHistory.setCreateTime(System.currentTimeMillis()); + mHistory.setPosition(replay ? C.TIME_UNSET : mHistory.getPosition()); } private void checkPlayImg(boolean playing) { @@ -1108,7 +1107,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void setPosition() { - if (mHistory != null) mPlayers.seekTo(Math.max(mHistory.getOpening(), mHistory.getPosition())); + if (mHistory != null) mPlayers.seekTo(mHistory.getOpening() > 0 ? mHistory.getOpening() : mHistory.getPosition()); } private void checkPortrait() { @@ -1288,9 +1287,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void onPlay() { - if (mHistory != null && mPlayers.isEnded()) mPlayers.seekTo(mHistory.getOpening()); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); if (!mPlayers.isEmpty() && mPlayers.isIdle()) mPlayers.prepare(); + if (mHistory != null && mPlayers.isEnded()) setPosition(); checkPlayImg(true); mPlayers.play(); }