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 ad14f51c8..88d201467 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,18 +338,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) checkError(event); + if (event.isDecode() && mPlayers.canToggle()) onDecode(); + else if (mPlayers.retried()) onError(event); else onReset(); } - private void checkError(ErrorEvent event) { - if (event.getCode() / 1000 == 4 && mPlayers.addCount() <= 2) { - 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 367a6fa3c..702fd81de 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 @@ -726,18 +726,11 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) checkError(event); + if (event.isDecode() && mPlayers.canToggle()) onDecode(); + else if (mPlayers.retried()) onError(event); else fetch(); } - private void checkError(ErrorEvent event) { - if (event.getCode() / 1000 == 4 && mPlayers.addCount() <= 2) { - 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 9d43af8cd..4ec1229ed 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 @@ -14,6 +14,7 @@ import android.text.style.ClickableSpan; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.RelativeLayout; import android.widget.TextView; @@ -523,6 +524,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void getPlayer(Flag flag, Episode episode, boolean replay) { mBinding.widget.title.setText(getString(R.string.detail_title, mBinding.name.getText(), episode.getName())); mViewModel.playerContent(getKey(), flag.getFlag(), episode.getUrl()); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); updateHistory(episode, replay); mPlayers.clear(); mPlayers.stop(); @@ -1104,6 +1106,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List if (mBinding.control.loop.isActivated()) { onReset(true); } else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); checkNext(); } } @@ -1131,18 +1134,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (isBackground()) return; - if (mPlayers.error()) checkError(event); + if (event.isDecode() && mPlayers.canToggle()) onDecode(); + else if (mPlayers.retried()) onError(event); else onRefresh(); } - private void checkError(ErrorEvent event) { - if (event.getCode() / 1000 == 4 && mPlayers.addCount() <= 2) { - onDecode(); - } else { - onError(event); - } - } - private void onError(ErrorEvent event) { Track.delete(getHistoryKey()); showError(event.getMsg()); @@ -1265,6 +1261,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void onPaused(boolean visible) { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); mBinding.widget.exoDuration.setText(mPlayers.getDurationTime()); mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(0)); if (visible) showInfo(); @@ -1273,6 +1270,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void onPlay() { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); mPlayers.play(); hideCenter(); } diff --git a/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java b/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java index 18c221f79..d2b9bfe0e 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java @@ -53,6 +53,10 @@ public class ErrorEvent { return code; } + public boolean isDecode() { + return code / 1000 == 4; + } + public String getMsg() { if (type == Type.URL) return ResUtil.getString(R.string.error_play_url, code); if (type == Type.FLAG) return ResUtil.getString(R.string.error_play_flag); 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 b50fefcf5..05d0addaf 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 @@ -146,8 +146,8 @@ public class Players implements Player.Listener, ParseCallback { this.position = position; } - public int addCount() { - return ++count; + public boolean canToggle() { + return ++count <= 2; } public void reset() { @@ -193,7 +193,7 @@ public class Players implements Player.Listener, ParseCallback { return exoPlayer == null ? 0 : exoPlayer.getBufferedPosition(); } - public boolean error() { + public boolean retried() { return ++retry > ExoUtil.getRetry(error); } 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 1d4667269..a44fc398a 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 @@ -785,18 +785,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { - if (mPlayers.error()) checkError(event); + if (event.isDecode() && mPlayers.canToggle()) onDecode(); + else if (mPlayers.retried()) onError(event); else fetch(); } - private void checkError(ErrorEvent event) { - if (event.getCode() / 1000 == 4 && mPlayers.addCount() <= 2) { - 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 b96dc6e30..a8e77bc88 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 @@ -1153,18 +1153,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (isRedirect()) return; - if (mPlayers.error()) checkError(event); + if (event.isDecode() && mPlayers.canToggle()) onDecode(); + else if (mPlayers.retried()) onError(event); else onRefresh(); } - private void checkError(ErrorEvent event) { - if (event.getCode() / 1000 == 4 && mPlayers.addCount() <= 2) { - onDecode(); - } else { - onError(event); - } - } - private void onError(ErrorEvent event) { mBinding.swipeLayout.setEnabled(true); Track.delete(getHistoryKey());