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 13b02cc2a..56e65b8e6 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 @@ -601,11 +601,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis Traffic.reset(); } - private void showError() { + private void showError(String text) { + mBinding.widget.text.setText(text); mBinding.widget.error.setVisibility(View.VISIBLE); } private void hideError() { + mBinding.widget.text.setText(""); mBinding.widget.error.setVisibility(View.GONE); } @@ -766,7 +768,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis checkNext(); break; default: - App.removeCallbacks(mR4); if (!event.isRetry() || mPlayers.addRetry() > 3) onError(event.getMsg()); else getPlayer(false); break; @@ -792,18 +793,21 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void onError() { - onError(""); + onError(getString(R.string.error_play_timeout)); } private void onError(String msg) { - int position = mBinding.flag.getSelectedPosition(); + showError(msg); + hideProgress(); + App.removeCallbacks(mR4); + Clock.get().setCallback(null); + checkNext(mBinding.flag.getSelectedPosition()); + } + + private void checkNext(int position) { if (position == mFlagAdapter.size() - 1) { - mBinding.widget.text.setText(msg); - Clock.get().setCallback(null); mPlayers.stop(); - hideProgress(); checkSearch(); - showError(); } else { mPlayers.reset(); nextFlag(position); @@ -814,7 +818,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis if (mSearchAdapter.size() > 0 && isAutoMode()) { nextSite(); } else { - initSearch(getName(), true); + initSearch(getName(), getSite().isSwitchable()); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 6b3cd1ac4..45c24e00e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -477,6 +477,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void getUrl() { mViewModel.getUrl(mChannel); + setR6Callback(); showProgress(); } @@ -646,7 +647,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick public void onPlayerEvent(PlayerEvent event) { switch (event.getState()) { case 0: - setR6Callback(); setTrackVisible(false); break; case Player.STATE_IDLE: @@ -664,7 +664,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick onKeyDown(); break; default: - App.removeCallbacks(mR6); if (!event.isRetry() || mPlayers.addRetry() > 3) onError(); else getUrl(); break; @@ -677,7 +676,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void onError() { + App.removeCallbacks(mR6); mPlayers.reset(); + checkNext(); + } + + private void checkNext() { if (mChannel.isOnly()) { if (isGone(mBinding.recycler)) onKeyDown(); } else { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index 0c06eabc3..41493e172 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -15,7 +15,7 @@ import com.google.gson.annotations.SerializedName; import java.util.Collections; import java.util.List; -@Entity(ignoredColumns = {"type", "api", "playUrl", "playerType", "ext", "jar", "categories"}) +@Entity(ignoredColumns = {"type", "api", "playUrl", "playerType", "switchable", "ext", "jar", "categories"}) public class Site { @NonNull @@ -36,6 +36,8 @@ public class Site { private Integer searchable; @SerializedName("filterable") private Integer filterable; + @SerializedName("switchable") + private Integer switchable; @SerializedName("ext") private String ext; @SerializedName("jar") @@ -122,6 +124,10 @@ public class Site { this.filterable = filterable; } + public Integer getSwitchable() { + return switchable == null ? 0 : switchable; + } + public String getExt() { return TextUtils.isEmpty(ext) ? "" : ext; } @@ -150,6 +156,10 @@ public class Site { this.activated = item.equals(this); } + public boolean isSwitchable() { + return getSwitchable() == 1; + } + public boolean isSearchable() { return getSearchable() == 1; } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 767f267ff..cca3f2484 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -85,6 +85,7 @@ 播放地址解析失败 播放数据加载失败 不支援的影片格式 + 连接超时 暂无播放数据 找不到数据 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7493bbe97..fb361540e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -85,6 +85,7 @@ 播放網址解析失敗 播放資料載入失敗 不支援的影片格式 + 連線逾時 暫無播放資料 找不到資料 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2565d95bb..bf1a73bf7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,6 +85,7 @@ Unable to parse url Unable to load url Unsupported video format + Timed out No episode data Not found