From 2c031a8a90ee69a9536ead45663fab90091bc4dc Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 11 Nov 2022 14:57:20 +0800 Subject: [PATCH] Fix play error logic --- .../android/tv/ui/activity/DetailActivity.java | 5 +++-- .../android/tv/ui/activity/LiveActivity.java | 4 ++-- .../com/fongmi/android/tv/player/Players.java | 15 +++++---------- 3 files changed, 10 insertions(+), 14 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 48f6d991c..c98a7bfed 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 @@ -547,7 +547,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE); break; case Player.STATE_READY: - mPlayers.setRetry(0); + mPlayers.reset(); mBinding.widget.progress.getRoot().setVisibility(View.GONE); TrackSelectionDialog.setVisible(mPlayers.exo(), mControl.tracks); break; @@ -555,7 +555,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis if (mPlayers.canNext()) checkNext(); break; default: - if (!event.isRetry() || mPlayers.addRetry() > 3) onError(event.getMsg()); + if (!event.isRetry() || mPlayers.addRetry() > 2) onError(event.getMsg()); else getPlayer(false); break; } @@ -575,6 +575,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis Clock.get().setCallback(null); mPlayers.stop(); } else { + mPlayers.reset(); Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(position + 1); Notify.show(ResUtil.getString(R.string.play_switching, flag.getFlag())); setFlagActivated(flag); 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 53f2d22d6..236e61336 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 @@ -531,7 +531,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE); break; case Player.STATE_READY: - mPlayers.setRetry(0); + mPlayers.reset(); mBinding.widget.progress.getRoot().setVisibility(View.GONE); TrackSelectionDialog.setVisible(mPlayers.exo(), mControl.tracks); break; @@ -546,7 +546,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void onError() { - mPlayers.setRetry(0); + mPlayers.reset(); if (isGone(mBinding.recycler) && mChannel.isLastLine()) { onKeyDown(); } else { 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 07d8ef70e..e4a5d4fbb 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 @@ -54,18 +54,15 @@ public class Players implements Player.Listener, AnalyticsListener, ParseTask.Ca return exoPlayer; } - private void setErrorCode(int errorCode) { - this.errorCode = errorCode; + public void reset() { + this.errorCode = 0; + this.retry = 0; } public int getRetry() { return retry; } - public void setRetry(int retry) { - this.retry = retry; - } - public int addRetry() { ++retry; return retry; @@ -139,7 +136,7 @@ public class Players implements Player.Listener, AnalyticsListener, ParseTask.Ca } public void stop() { - setRetry(0); + reset(); exoPlayer.stop(); exoPlayer.clearMediaItems(); } @@ -176,14 +173,12 @@ public class Players implements Player.Listener, AnalyticsListener, ParseTask.Ca exoPlayer.setMediaSource(ExoUtil.getSource(result, errorCode)); PlayerEvent.state(0); exoPlayer.prepare(); - setErrorCode(0); } private void setMediaSource(Map headers, String url) { exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, errorCode)); PlayerEvent.state(0); exoPlayer.prepare(); - setErrorCode(0); } @Override @@ -199,8 +194,8 @@ public class Players implements Player.Listener, AnalyticsListener, ParseTask.Ca @Override public void onPlayerError(@NonNull PlaybackException error) { + this.errorCode = error.errorCode; PlayerEvent.error(R.string.error_play_format, true); - setErrorCode(error.errorCode); } @Override