From a650fb8669994e60718193336ffc0b5d298349f0 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 30 Apr 2026 01:20:57 +0800 Subject: [PATCH] Fix play bug --- .../com/fongmi/android/tv/ui/activity/VideoActivity.java | 2 +- .../java/com/fongmi/android/tv/player/PlayerManager.java | 5 ++++- .../fongmi/android/tv/player/engine/ExoPlayerEngine.java | 9 +++++++-- .../fongmi/android/tv/ui/activity/PlaybackActivity.java | 2 ++ 4 files changed, 14 insertions(+), 4 deletions(-) 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 571dd93f3..9e7694b65 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 @@ -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(); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java b/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java index b3b9bba27..7db18519a 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java +++ b/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java @@ -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; diff --git a/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java b/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java index 9f1511892..06117376d 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java +++ b/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java @@ -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; } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/PlaybackActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/PlaybackActivity.java index ad8006741..8ed4f6c49 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/PlaybackActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/PlaybackActivity.java @@ -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);