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 7c5fe7909..c9003fe36 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 @@ -134,6 +134,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private List mBroken; private History mHistory; private Players mPlayers; + private boolean background; private boolean fullscreen; private boolean initTrack; private boolean initAuto; @@ -298,6 +299,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mR1 = this::hideControl; mR2 = this::setTraffic; mR3 = this::showEmpty; + setBackground(false); setRecyclerView(); setVideoView(); setDanmuView(); @@ -1118,6 +1120,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onActionEvent(ActionEvent event) { + if (isBackground()) return; if (ActionEvent.PLAY.equals(event.getAction()) || ActionEvent.PAUSE.equals(event.getAction())) { onKeyCenter(); } else if (ActionEvent.NEXT.equals(event.getAction())) { @@ -1131,6 +1134,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { + if (isBackground()) return; if (event.getType() == RefreshEvent.Type.DETAIL) getDetail(); else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh(); else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmu(event.getPath()); @@ -1139,6 +1143,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onPlayerEvent(PlayerEvent event) { + if (isBackground()) return; switch (event.getState()) { case 0: setPosition(); @@ -1208,6 +1213,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { + if (isBackground()) return; if (mPlayers.addRetry() > event.getRetry()) checkError(event); else onRefresh(); } @@ -1359,6 +1365,14 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List hideCenter(); } + public boolean isBackground() { + return background; + } + + public void setBackground(boolean background) { + this.background = background; + } + private boolean isFullscreen() { return fullscreen; } @@ -1545,6 +1559,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override protected void onResume() { super.onResume(); + setBackground(false); mClock.start(); onPlay(); } @@ -1552,6 +1567,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override protected void onPause() { super.onPause(); + setBackground(true); onPaused(false); mClock.stop(); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 8b7867025..efed90cbe 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -85,9 +85,7 @@ public class ExoUtil { } public static int getRetry(int errorCode) { - if (errorCode == PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED || errorCode == PlaybackException.ERROR_CODE_IO_FILE_NOT_FOUND) return 0; - if (errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED || errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_IO_UNSPECIFIED) return 2; - return 1; + return errorCode >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && errorCode <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED ? 2 : 1; } public static boolean haveTrack(Tracks tracks, int type) { @@ -116,6 +114,13 @@ public class ExoUtil { return MimeTypes.APPLICATION_SUBRIP; } + private static String getMimeType(String format, int errorCode) { + if (format != null) return format; + if (errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED) return MimeTypes.APPLICATION_OCTET; + if (errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED) return MimeTypes.APPLICATION_M3U8; + return null; + } + public static MediaSource getSource(Result result, Sub sub, int errorCode) { return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), sub, null, errorCode); } @@ -146,13 +151,6 @@ public class ExoUtil { return builder.build(); } - private static String getMimeType(String format, int errorCode) { - if (format != null) return format; - if (errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED) return MimeTypes.APPLICATION_OCTET; - if (errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_IO_UNSPECIFIED) return MimeTypes.APPLICATION_M3U8; - return null; - } - private static List getSubtitles(List subs) { List items = new ArrayList<>(); for (Sub sub : subs) items.add(sub.getExo()); diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index e0bf5e6c4..f7765322d 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -3,6 +3,7 @@ package com.github.catvod.net.interceptor; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.github.catvod.Proxy; import com.github.catvod.utils.Util; import com.google.common.net.HttpHeaders; @@ -50,7 +51,8 @@ public class DefaultInterceptor implements Interceptor { private Request getRequest(@NonNull Request request) { String url = request.url().toString(); Request.Builder builder = request.newBuilder(); - if (url.contains("+") && (url.contains("127.0.0.1") || url.contains("/file/"))) builder.url(url.replace("+", "%2B")); + boolean local = url.contains(":" + Proxy.getPort() + "/"); + if (url.contains("+") && local) builder.url(url.replace("+", "%2B")); if (url.contains("gitcode.net")) builder.addHeader(HttpHeaders.USER_AGENT, Util.CHROME); return builder.build(); }