diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 83b50a805..5aecc0a40 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -466,7 +466,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void seamless(Vod.Flag flag, boolean force) { if (!force && !getSite().isChangeable()) return; - Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks()); + Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks(), getMark() == null); if (episode == null || episode.isActivated()) return; mHistory.setVodRemarks(episode.getName()); setEpisodeActivated(episode); 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 c9d8c1d59..9dfdf1972 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 @@ -316,7 +316,7 @@ public class History { for (History item : find()) { if (getPosition() > 0) break; for (Vod.Flag flag : flags) { - Vod.Flag.Episode episode = flag.find(item.getVodRemarks()); + Vod.Flag.Episode episode = flag.find(item.getVodRemarks(), true); if (episode == null) continue; setVodFlag(flag.getFlag()); setPosition(item.getPosition()); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index 5f127385f..bda5cfda0 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -329,14 +329,16 @@ public class Vod { for (int i = 0; i < getEpisodes().size(); i++) getEpisodes().get(i).setActivated(i == getPosition()); } - public Episode find(String remarks) { + public Episode find(String remarks, boolean strict) { int number = Utils.digit(remarks); + if (getEpisodes().size() == 0) return null; if (getEpisodes().size() == 1) return getEpisodes().get(0); + if (getPosition() != -1) return getEpisodes().get(getPosition()); for (Episode item : getEpisodes()) if (item.rule1(remarks)) return item; for (Episode item : getEpisodes()) if (item.rule2(number)) return item; for (Episode item : getEpisodes()) if (item.rule3(remarks)) return item; for (Episode item : getEpisodes()) if (item.rule4(remarks)) return item; - return getPosition() != -1 ? getEpisodes().get(getPosition()) : null; + return strict ? null : getEpisodes().get(0); } public Episode check(Episode episode) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 72095fb77..68d1058ac 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -33,6 +33,7 @@ import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.bean.Keep; @@ -70,7 +71,6 @@ import com.fongmi.android.tv.utils.Clock; import com.fongmi.android.tv.utils.FileChooser; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.PiP; -import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Sniffer; import com.fongmi.android.tv.utils.Traffic; @@ -193,15 +193,15 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } private int getPlayer() { - return mHistory != null && mHistory.getPlayer() != -1 ? mHistory.getPlayer() : getSite().getPlayerType() != -1 ? getSite().getPlayerType() : Prefers.getPlayer(); + return mHistory != null && mHistory.getPlayer() != -1 ? mHistory.getPlayer() : getSite().getPlayerType() != -1 ? getSite().getPlayerType() : Setting.getPlayer(); } private int getScale() { - return mHistory != null && mHistory.getScale() != -1 ? mHistory.getScale() : Prefers.getScale(); + return mHistory != null && mHistory.getScale() != -1 ? mHistory.getScale() : Setting.getScale(); } private PlayerView getExo() { - return Prefers.getRender() == 0 ? mBinding.surface : mBinding.texture; + return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture; } private IjkVideoView getIjk() { @@ -209,7 +209,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } private boolean isReplay() { - return Prefers.getReset() == 1; + return Setting.getReset() == 1; } private boolean isFromCollect() { @@ -326,7 +326,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust getExo().setVisibility(mPlayers.isExo() ? View.VISIBLE : View.GONE); getIjk().setVisibility(mPlayers.isIjk() ? View.VISIBLE : View.GONE); if (mControlDialog != null && mControlDialog.isVisible()) mControlDialog.updatePlayer(); - mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Prefers.getReset()]); + mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); mBinding.video.addOnLayoutChangeListener((view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mPiP.update(getActivity(), view)); } @@ -495,7 +495,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust private void seamless(Vod.Flag flag, boolean force) { if (!force && !getSite().isChangeable()) return; - Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks()); + Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks(), getMark() == null); if (episode == null || episode.isActivated()) return; mHistory.setVodRemarks(episode.getName()); onItemClick(episode); @@ -656,8 +656,8 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } private boolean onResetToggle() { - Prefers.putReset(Math.abs(Prefers.getReset() - 1)); - mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Prefers.getReset()]); + Setting.putReset(Math.abs(Setting.getReset() - 1)); + mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); return true; }