|
|
|
|
@ -92,6 +92,7 @@ import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
|
import java.util.concurrent.Executors; |
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
|
|
|
|
|
import me.jessyan.autosize.AutoSize; |
|
|
|
|
import tv.danmaku.ijk.media.player.IMediaPlayer; |
|
|
|
|
@ -481,6 +482,7 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void playUrl(String url, HashMap<String, String> headers) { |
|
|
|
|
LOG.i("playUrl:" + url); |
|
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
@ -582,7 +584,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
String flag = info.optString("flag"); |
|
|
|
|
String url = info.getString("url"); |
|
|
|
|
HashMap<String, String> headers = null; |
|
|
|
|
webUserAgent = null; |
|
|
|
|
webHeaderMap = null; |
|
|
|
|
if (info.has("header")) { |
|
|
|
|
try { |
|
|
|
|
@ -594,9 +595,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
headers = new HashMap<>(); |
|
|
|
|
} |
|
|
|
|
headers.put(key, hds.getString(key)); |
|
|
|
|
if (key.equalsIgnoreCase("user-agent")) { |
|
|
|
|
webUserAgent = hds.getString(key).trim(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
webHeaderMap = headers; |
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
@ -776,6 +774,7 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
mController.setTitle(playTitleInfo); |
|
|
|
|
|
|
|
|
|
stopParse(); |
|
|
|
|
loadFoundCount.set(0); |
|
|
|
|
if(mVideoView!=null) mVideoView.release(); |
|
|
|
|
String subtitleCacheKey = mVodInfo.sourceKey + "-" + mVodInfo.id + "-" + mVodInfo.playFlag + "-" + mVodInfo.playIndex+ "-" + vs.name + "-subt"; |
|
|
|
|
String progressKey = mVodInfo.sourceKey + mVodInfo.id + mVodInfo.playFlag + mVodInfo.playIndex + vs.name; |
|
|
|
|
@ -814,7 +813,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
private String progressKey; |
|
|
|
|
private String parseFlag; |
|
|
|
|
private String webUrl; |
|
|
|
|
private String webUserAgent; |
|
|
|
|
private Map<String, String > webHeaderMap; |
|
|
|
|
|
|
|
|
|
private void initParse(String flag, boolean useParse, String playUrl, final String url) { |
|
|
|
|
@ -844,7 +842,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
parseBean.setUrl(playUrl); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
loadFound = false; |
|
|
|
|
doParse(parseBean); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -881,7 +878,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
void stopParse() { |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
loadFound = false; |
|
|
|
|
OkGo.getInstance().cancelTag("json_jx"); |
|
|
|
|
if (parseThreadPool != null) { |
|
|
|
|
try { |
|
|
|
|
@ -897,6 +893,7 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
|
|
|
|
|
private void doParse(ParseBean pb) { |
|
|
|
|
stopParse(); |
|
|
|
|
loadFoundCount.set(0); |
|
|
|
|
if (pb.getType() == 0) { |
|
|
|
|
setTip("正在嗅探播放地址", true, false); |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
@ -1094,7 +1091,7 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
private WebView mSysWebView; |
|
|
|
|
private SysWebClient mSysWebClient; |
|
|
|
|
private Map<String, Boolean> loadedUrls = new HashMap<>(); |
|
|
|
|
private boolean loadFound = false; |
|
|
|
|
private AtomicInteger loadFoundCount = new AtomicInteger(0); |
|
|
|
|
|
|
|
|
|
void loadWebView(String url) { |
|
|
|
|
if (mSysWebView == null && mXwalkWebView == null) { |
|
|
|
|
@ -1161,14 +1158,9 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
// webUserAgent = "Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36";
|
|
|
|
|
if (mXwalkWebView != null) { |
|
|
|
|
mXwalkWebView.stopLoading(); |
|
|
|
|
Map<String, String > map = new HashMap<String, String>() ; |
|
|
|
|
|
|
|
|
|
if(webUserAgent != null) { |
|
|
|
|
mXwalkWebView.getSettings().setUserAgentString(webUserAgent); |
|
|
|
|
} |
|
|
|
|
//mXwalkWebView.clearCache(true);
|
|
|
|
|
if(webHeaderMap != null){ |
|
|
|
|
mXwalkWebView.loadUrl(url,webHeaderMap); |
|
|
|
|
@ -1178,9 +1170,6 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
} |
|
|
|
|
if (mSysWebView != null) { |
|
|
|
|
mSysWebView.stopLoading(); |
|
|
|
|
if(webUserAgent != null) { |
|
|
|
|
mSysWebView.getSettings().setUserAgentString(webUserAgent); |
|
|
|
|
} |
|
|
|
|
//mSysWebView.clearCache(true);
|
|
|
|
|
if(webHeaderMap != null){ |
|
|
|
|
mSysWebView.loadUrl(url,webHeaderMap); |
|
|
|
|
@ -1369,20 +1358,21 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
ad = loadedUrls.get(url); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!ad && !loadFound) { |
|
|
|
|
if (!ad) { |
|
|
|
|
if (checkVideoFormat(url)) { |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
loadFound = true; |
|
|
|
|
if (headers != null && !headers.isEmpty()) { |
|
|
|
|
playUrl(url, headers); |
|
|
|
|
} else { |
|
|
|
|
playUrl(url, null); |
|
|
|
|
if (loadFoundCount.incrementAndGet() == 1) { |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
if (headers != null && !headers.isEmpty()) { |
|
|
|
|
playUrl(url, headers); |
|
|
|
|
} else { |
|
|
|
|
playUrl(url, null); |
|
|
|
|
} |
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
} |
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return ad || loadFound ? |
|
|
|
|
return ad || loadFoundCount.get() > 0 ? |
|
|
|
|
AdBlocker.createEmptyResource() : |
|
|
|
|
null; |
|
|
|
|
} |
|
|
|
|
@ -1391,10 +1381,7 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
@Override |
|
|
|
|
public WebResourceResponse shouldInterceptRequest(WebView view, String url) { |
|
|
|
|
WebResourceResponse response = checkIsVideo(url, null); |
|
|
|
|
// if (response == null)
|
|
|
|
|
// return super.shouldInterceptRequest(view, url);
|
|
|
|
|
// else
|
|
|
|
|
return response; |
|
|
|
|
return response; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Nullable |
|
|
|
|
@ -1410,21 +1397,16 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
HashMap<String, String> webHeaders = new HashMap<>(); |
|
|
|
|
try { |
|
|
|
|
Map<String, String> hds = request.getRequestHeaders(); |
|
|
|
|
for (String k : hds.keySet()) { |
|
|
|
|
if (k.equalsIgnoreCase("user-agent") |
|
|
|
|
|| k.equalsIgnoreCase("referer") |
|
|
|
|
|| k.equalsIgnoreCase("origin")) { |
|
|
|
|
webHeaders.put(k, " " + hds.get(k)); |
|
|
|
|
if (!hds.isEmpty() && hds.size() > 0) { |
|
|
|
|
for (String k : hds.keySet()) { |
|
|
|
|
webHeaders.put(k, hds.get(k)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
|
|
|
|
|
th.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
WebResourceResponse response = checkIsVideo(url, webHeaders); |
|
|
|
|
// if (response == null)
|
|
|
|
|
// return super.shouldInterceptRequest(view, request);
|
|
|
|
|
// else
|
|
|
|
|
return response; |
|
|
|
|
return response; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@ -1541,32 +1523,31 @@ public class PlayActivity extends BaseActivity { |
|
|
|
|
} else { |
|
|
|
|
ad = loadedUrls.get(url); |
|
|
|
|
} |
|
|
|
|
if (!ad && !loadFound) { |
|
|
|
|
if (!ad ) { |
|
|
|
|
if (checkVideoFormat(url)) { |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
loadFound = true; |
|
|
|
|
HashMap<String, String> webHeaders = new HashMap<>(); |
|
|
|
|
try { |
|
|
|
|
Map<String, String> hds = request.getRequestHeaders(); |
|
|
|
|
for (String k : hds.keySet()) { |
|
|
|
|
if (k.equalsIgnoreCase("user-agent") |
|
|
|
|
|| k.equalsIgnoreCase("referer") |
|
|
|
|
|| k.equalsIgnoreCase("origin")) { |
|
|
|
|
webHeaders.put(k, " " + hds.get(k)); |
|
|
|
|
if (loadFoundCount.incrementAndGet() == 1) { |
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
HashMap<String, String> webHeaders = new HashMap<>(); |
|
|
|
|
try { |
|
|
|
|
Map<String, String> hds = request.getRequestHeaders(); |
|
|
|
|
if (!hds.isEmpty() && hds.size() > 0) { |
|
|
|
|
for (String k : hds.keySet()) { |
|
|
|
|
webHeaders.put(k, hds.get(k)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
th.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
if (webHeaders != null && !webHeaders.isEmpty()) { |
|
|
|
|
playUrl(url, webHeaders); |
|
|
|
|
} else { |
|
|
|
|
playUrl(url, null); |
|
|
|
|
if (webHeaders != null && !webHeaders.isEmpty()) { |
|
|
|
|
playUrl(url, webHeaders); |
|
|
|
|
} else { |
|
|
|
|
playUrl(url, null); |
|
|
|
|
} |
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
} |
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return ad || loadFound ? |
|
|
|
|
return ad || loadFoundCount.get() > 0 ? |
|
|
|
|
createXWalkWebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())) : |
|
|
|
|
super.shouldInterceptLoadRequest(view, request); |
|
|
|
|
} |
|
|
|
|
|