Fix play bug

fongmi
FongMi 2 weeks ago
parent 4a41e1aa61
commit a650fb8669
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java
  3. 9
      app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/ui/activity/PlaybackActivity.java

@ -245,7 +245,7 @@ public class VideoActivity extends PlaybackActivity implements CustomKeyDownVod.
@Override
protected void onServiceConnected() {
player().setDanmakuController(mBinding.exo.getDanmakuController());
player().setDanmakuEnabled(DanmakuSetting.isShow());
player().setDanmakuEnabled(true);
checkId();
}

@ -414,7 +414,10 @@ public class PlayerManager implements ParseCallback {
@Override
public void onPlayerError(@NonNull PlaybackException e) {
PlayerEngine.ErrorAction action = engine.handleError(e);
if (action == PlayerEngine.ErrorAction.RECOVERED) return;
if (action == PlayerEngine.ErrorAction.RECOVERED) {
setDanmakus(spec.getDanmakus());
return;
}
if (++retry > 2) {
callback.onError(engine.getErrorMessage(e));
return;

@ -1,5 +1,6 @@
package com.fongmi.android.tv.player.engine;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.MediaTitle;
@ -143,7 +144,11 @@ public class ExoPlayerEngine implements PlayerEngine {
}
private void startInternal() {
player.setMediaItem(ExoUtil.getMediaItem(spec, decode));
startInternal(C.TIME_UNSET);
}
private void startInternal(long position) {
player.setMediaItem(ExoUtil.getMediaItem(spec, decode), position);
player.prepare();
player.play();
}
@ -156,7 +161,7 @@ public class ExoPlayerEngine implements PlayerEngine {
private ErrorAction retryFormat(int errorCode) {
spec.setFormat(ExoUtil.getMimeType(errorCode));
startInternal();
startInternal(player.getCurrentPosition());
return ErrorAction.RECOVERED;
}
}

@ -156,6 +156,8 @@ public abstract class PlaybackActivity extends BaseActivity implements MediaCont
onError(ResUtil.getString(R.string.error_play_drm));
} else if (result.hasMsg()) {
onError(result.getMsg());
} else if (result.getRealUrl().isEmpty()) {
onError(ResUtil.getString(R.string.error_play_url));
} else if (result.needParse() || useParse) {
attachSurface();
player().parse(key, result, useParse, metadata);

Loading…
Cancel
Save