From ff78ff6656dc219e3860fba091601c1ae2fde442 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 3 Oct 2022 18:23:56 +0800 Subject: [PATCH] Support seamless --- .../tv/ui/activity/DetailActivity.java | 38 ++++++++++++------- .../com/fongmi/android/tv/bean/History.java | 8 ++-- .../java/com/fongmi/android/tv/bean/Vod.java | 11 +++--- app/src/main/res/values-zh-rCN/strings.xml | 3 ++ app/src/main/res/values-zh-rTW/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 6 files changed, 43 insertions(+), 23 deletions(-) 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 679002341..56db18d7b 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 @@ -273,10 +273,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen mBinding.flag.setSelectedPosition(i); mEpisodeAdapter.setItems(flag.getEpisodes(), null); setGroup(flag.getEpisodes().size()); + seamless(flag); } mFlagAdapter.notifyArrayItemRangeChanged(0, mFlagAdapter.size()); } + private void seamless(Vod.Flag flag) { + Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks()); + if (episode != null) { + if (mPlayers.getCurrentPosition() > 0) mHistory.setPosition(mPlayers.getCurrentPosition()); + mHistory.setVodRemarks(episode.getName()); + setEpisodeActivated(episode.deactivated()); + } + } + private void setEpisodeActivated(Vod.Flag.Episode item) { if (shouldEnterFullscreen(item)) return; mCurrent = mBinding.flag.getSelectedPosition(); @@ -358,7 +368,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen private void onKeep() { Keep keep = Keep.find(getHistoryKey()); - Notify.show(keep != null ? "已取消收藏" : "已加入收藏"); + Notify.show(keep != null ? R.string.detail_keep_del : R.string.detail_keep_add); if (keep != null) keep.delete(); else createKeep(); checkKeep(); @@ -475,14 +485,12 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen } if (mHistory != null) { setFlagActivated(mHistory.getFlag()); - setEpisodeActivated(mHistory.getEpisode()); if (mHistory.isRevSort()) reverseEpisode(); mControl.opening.setText(mPlayers.getStringForTime(mHistory.getOpening())); mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding())); } else { mHistory = createHistory(); setFlagActivated(mHistory.getFlag()); - setEpisodeActivated(mHistory.getEpisode()); mControl.opening.setText(mPlayers.getStringForTime(0)); mControl.ending.setText(mPlayers.getStringForTime(0)); } @@ -570,7 +578,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen break; default: if (!event.isRetry() || mPlayers.addRetry() > 3) onError(event.getMsg()); - else onRetry(); + else getPlayer(false); break; } } @@ -580,17 +588,19 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen Clock.get().setCallback(this); } - private void onRetry() { - mHistory.setPosition(mPlayers.getCurrentPosition()); - getPlayer(false); - } - private void onError(String msg) { - mBinding.widget.progress.getRoot().setVisibility(View.GONE); - mBinding.widget.error.setVisibility(View.VISIBLE); - mBinding.widget.text.setText(msg); - Clock.get().setCallback(null); - mPlayers.stop(); + int position = mBinding.flag.getSelectedPosition(); + if (position == mFlagAdapter.size() - 1) { + mBinding.widget.progress.getRoot().setVisibility(View.GONE); + mBinding.widget.error.setVisibility(View.VISIBLE); + mBinding.widget.text.setText(msg); + Clock.get().setCallback(null); + mPlayers.stop(); + } else { + Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(position + 1); + Notify.show(ResUtil.getString(R.string.play_switching, flag.getFlag())); + setFlagActivated(flag); + } } private void onPause(boolean visible) { 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 7bb341484..10000e2c4 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 @@ -213,11 +213,11 @@ public class History { if (getPosition() > 0) break; for (int i = 0; i < adapter.size(); i++) { flag = (Vod.Flag) adapter.get(i); - String episode = flag.find(item.getVodRemarks()); - if (episode.isEmpty()) continue; - setPosition(item.getPosition()); + Vod.Flag.Episode episode = flag.find(item.getVodRemarks()); + if (episode == null) continue; setVodFlag(flag.getFlag()); - setVodRemarks(episode); + setPosition(item.getPosition()); + setVodRemarks(episode.getName()); break; } } 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 43a182b5e..3af9eeb43 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 @@ -245,11 +245,11 @@ public class Vod { else for (Episode item : getEpisodes()) item.deactivated(); } - public String find(String remarks) { + public Episode find(String remarks) { int number = Utils.getDigit(remarks); - for (Vod.Flag.Episode item : getEpisodes()) if (number == item.getNumber()) return item.getName(); - if (getEpisodes().size() == 1) return getEpisodes().get(0).getName(); - return ""; + for (Vod.Flag.Episode item : getEpisodes()) if (number == item.getNumber()) return item; + if (getEpisodes().size() == 1) return getEpisodes().get(0); + return null; } @Override @@ -299,8 +299,9 @@ public class Vod { return activated; } - private void deactivated() { + public Episode deactivated() { this.activated = false; + return this; } private void setActivated(Episode item) { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 501e037e3..f9b1abc83 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -24,6 +24,8 @@ 简介:%s 简介 收藏 + 已加入收藏 + 已取消收藏 播放 @@ -39,6 +41,7 @@ 已切换正序播放 已切换倒序播放 + 正在切换线路至%s 解析 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index db53c8ed0..1636f7199 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -24,6 +24,8 @@ 簡介:%s 簡介 收藏 + 已加入收藏 + 已取消收藏 播放 @@ -39,6 +41,7 @@ 已切換正序播放 已切換倒序播放 + 正在切換線路至%s 解析 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04f2b5c7d..5b23109e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,6 +24,8 @@ Summary: %s Summary Keep + Added + Removed Play @@ -39,6 +41,7 @@ Normal play switched Reverse play switched + Switching to %s Parse