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 032c1b5bb..7144f3484 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 @@ -100,6 +100,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private Runnable mR1; private Runnable mR2; private Runnable mR3; + private Runnable mR4; public static void start(Activity activity, String id, String name) { start(activity, ApiConfig.get().getHome().getKey(), id, name); @@ -185,6 +186,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mR1 = this::hideControl; mR2 = this::hideCenter; mR3 = this::setTraffic; + mR4 = this::onError; setRecyclerView(); setVideoView(); setViewModel(); @@ -317,6 +319,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl()); Clock.get().setCallback(null); updateHistory(item, replay); + setR4Callback(); showProgress(); hideError(); } @@ -642,6 +645,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis App.post(mR1, 5000); } + private void setR4Callback() { + App.removeCallbacks(mR4); + App.post(mR4, 15000); + } + private void getPart(String source) { OkHttp.newCall("http://api.pullword.com/get.php?source=" + URLEncoder.encode(source.trim()) + "¶m1=0¶m2=0&json=1").enqueue(new Callback() { @Override @@ -751,12 +759,14 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mPlayers.reset(); setDefaultTrack(); setTrackVisible(true); + App.removeCallbacks(mR4); mBinding.widget.size.setText(mPlayers.getSizeText()); break; case Player.STATE_ENDED: checkNext(); break; default: + App.removeCallbacks(mR4); if (!event.isRetry() || mPlayers.addRetry() > 3) onError(event.getMsg()); else getPlayer(false); break; @@ -781,6 +791,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } } + private void onError() { + onError(""); + } + private void onError(String msg) { int position = mBinding.flag.getSelectedPosition(); if (position == mFlagAdapter.size() - 1) { @@ -994,6 +1008,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis protected void onDestroy() { super.onDestroy(); mPlayers.release(); - App.removeCallbacks(mR1, mR2, mR3); + App.removeCallbacks(mR1, mR2, mR3, mR4); } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index a77d481f0..23c016c90 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -35,7 +35,6 @@ public class CustomWebView extends WebView { private List keys; private String key; private String ads; - private int retry; public static CustomWebView create(@NonNull Context context) { return new CustomWebView(context); @@ -86,13 +85,13 @@ public class CustomWebView extends WebView { String url = request.getUrl().toString(); String host = request.getUrl().getHost(); if (ads.contains(host)) return empty; - App.post(mTimer, 15 * 1000); Map headers = request.getRequestHeaders(); if (isVideoFormat(url, headers)) post(headers, url); return super.shouldInterceptRequest(view, request); } @Override + @SuppressLint("WebViewClientOnReceivedSslError") public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } @@ -111,21 +110,11 @@ public class CustomWebView extends WebView { return Utils.isVideoFormat(url, headers); } - private final Runnable mTimer = new Runnable() { - @Override - public void run() { - if (retry > 3) return; - if (retry++ == 3) stop(true); - else reload(); - } - }; - private void post(Map headers, String url) { Map news = new HashMap<>(); String cookie = CookieManager.getInstance().getCookie(url); if (!TextUtils.isEmpty(cookie)) news.put("cookie", cookie); for (String key : headers.keySet()) if (keys.contains(key.toLowerCase())) news.put(key, headers.get(key)); - App.removeCallbacks(mTimer); App.post(() -> { onSuccess(news, url); stop(false); @@ -135,7 +124,6 @@ public class CustomWebView extends WebView { public void stop(boolean error) { stopLoading(); loadUrl("about:blank"); - App.removeCallbacks(mTimer); if (error) App.post(this::onError); else callback = null; }