Fix play error logic

pull/123/head
FongMi 3 years ago
parent 03965a34da
commit 2c031a8a90
  1. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 15
      app/src/main/java/com/fongmi/android/tv/player/Players.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);

@ -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 {

@ -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<String, String> 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

Loading…
Cancel
Save