diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index f6a1cdf4d..f528342d5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -338,10 +338,18 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) onError(event); + if (mPlayers.error()) checkError(event); else onReset(); } + private void checkError(ErrorEvent event) { + if (mPlayers.isHard() && event.getCode() / 1000 == 4) { + onDecode(); + } else { + onError(event); + } + } + private void onError(ErrorEvent event) { showError(event.getMsg()); onStopped(); 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 ca2494db5..b912579b8 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 @@ -727,10 +727,18 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) onError(event); + if (mPlayers.error()) checkError(event); else fetch(); } + private void checkError(ErrorEvent event) { + if (mPlayers.isHard() && event.getCode() / 1000 == 4) { + onDecode(); + } else { + onError(event); + } + } + private void onError(ErrorEvent event) { showError(event.getMsg()); mPlayers.reset(); 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 74f160603..42582874b 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 @@ -1132,10 +1132,18 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (isBackground()) return; - if (mPlayers.error()) onError(event); + if (mPlayers.error()) checkError(event); else onRefresh(); } + private void checkError(ErrorEvent event) { + if (mPlayers.isHard() && event.getCode() / 1000 == 4) { + onDecode(); + } else { + onError(event); + } + } + private void onError(ErrorEvent event) { Track.delete(getHistoryKey()); showError(event.getMsg()); diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index a94c973c7..95fced29e 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -216,6 +216,10 @@ public class Players implements Player.Listener, ParseCallback { return getDuration() > 5 * 60 * 1000 && !exoPlayer.isCurrentMediaItemLive(); } + public boolean isHard() { + return decode == HARD; + } + public boolean isPortrait() { return getVideoHeight() > getVideoWidth(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index acf9d469c..e44a9aec5 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -786,10 +786,18 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) onError(event); + if (mPlayers.error()) checkError(event); else fetch(); } + private void checkError(ErrorEvent event) { + if (mPlayers.isHard() && event.getCode() / 1000 == 4) { + onDecode(); + } else { + onError(event); + } + } + private void onError(ErrorEvent event) { showError(event.getMsg()); mPlayers.reset(); 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 6aaf7f8cf..04c088992 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 @@ -1142,10 +1142,18 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (isRedirect()) return; - if (mPlayers.error()) onError(event); + if (mPlayers.error()) checkError(event); else onRefresh(); } + private void checkError(ErrorEvent event) { + if (mPlayers.isHard() && event.getCode() / 1000 == 4) { + onDecode(); + } else { + onError(event); + } + } + private void onError(ErrorEvent event) { mBinding.swipeLayout.setEnabled(true); Track.delete(getHistoryKey());