diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index cb70e306..40f43aa1 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -35,7 +35,7 @@
# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
# 因为这些子类都有可能被外部调用
-keep public class * extends android.app.Activity
--keep public class * extends android.app.Appliction.**
+-keep public class * extends android.app.Application.**
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
diff --git a/app/src/main/java/com/github/tvbox/osc/picasso/RoundTransformation.java b/app/src/main/java/com/github/tvbox/osc/picasso/RoundTransformation.java
index 6293ed75..ebeb24e0 100644
--- a/app/src/main/java/com/github/tvbox/osc/picasso/RoundTransformation.java
+++ b/app/src/main/java/com/github/tvbox/osc/picasso/RoundTransformation.java
@@ -87,7 +87,7 @@ public class RoundTransformation implements Transformation {
matrix.postScale(scale, scale);
mBitmapShader.setLocalMatrix(matrix);
}
- Bitmap bitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
+ Bitmap bitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.RGB_565);
bitmap.setHasAlpha(true);
Canvas mCanvas = new Canvas(bitmap);
mPaint.setShader(mBitmapShader);
diff --git a/app/src/main/java/com/github/tvbox/osc/subtitle/widget/SimpleSubtitleView.java b/app/src/main/java/com/github/tvbox/osc/subtitle/widget/SimpleSubtitleView.java
index 23e26338..5c95e8fe 100644
--- a/app/src/main/java/com/github/tvbox/osc/subtitle/widget/SimpleSubtitleView.java
+++ b/app/src/main/java/com/github/tvbox/osc/subtitle/widget/SimpleSubtitleView.java
@@ -108,7 +108,9 @@ public class SimpleSubtitleView extends TextView
text = text.replaceAll("(?:\\r\\n)", "
");
text = text.replaceAll("(?:\\r)", "
");
text = text.replaceAll("(?:\\n)", "
");
- text = text.replaceAll("\\{[\\s\\S]*\\}", "");
+ text = text.replaceAll("\\\\N", "
");
+ text = text.replaceAll("\\{[\\s\\S]*?\\}", "");
+ text = text.replaceAll("^.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,", "");
setText(Html.fromHtml(text));
}
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
index b417613b..98694776 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
@@ -635,6 +635,7 @@ public class DetailActivity extends BaseActivity {
.override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
+ .noFade()
.error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
index b7339c63..7287ece6 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
@@ -501,14 +501,15 @@ public class PlayActivity extends BaseActivity {
if(autoRetryCount>1 && url.contains(".m3u8")){
url="http://home.jundie.top:666/unBom.php?m3u8="+url;//尝试去bom头再次播放
}
- final String[] finalUrl = {url};
+ final String finalUrl = url;
runOnUiThread(new Runnable() {
@Override
public void run() {
stopParse();
if (mVideoView != null) {
mVideoView.release();
- if (finalUrl[0] != null) {
+ if (finalUrl != null) {
+ String url =finalUrl;
try {
int playerType = mVodPlayerCfg.getInt("pl");
if (playerType >= 10) {
@@ -517,7 +518,7 @@ public class PlayActivity extends BaseActivity {
setTip("调用外部播放器" + PlayerHelper.getPlayerName(playerType) + "进行播放", true, false);
boolean callResult = false;
long progress = getSavedProgress(progressKey);
- callResult = PlayerHelper.runExternalPlayer(playerType, PlayActivity.this, finalUrl[0], playTitle, playSubtitle, headers, progress);
+ callResult = PlayerHelper.runExternalPlayer(playerType, PlayActivity.this, url, playTitle, playSubtitle, headers, progress);
setTip("调用外部播放器" + PlayerHelper.getPlayerName(playerType) + (callResult ? "成功" : "失败"), callResult, !callResult);
return;
}
@@ -525,20 +526,20 @@ public class PlayActivity extends BaseActivity {
e.printStackTrace();
}
hideTip();
- if (finalUrl[0].startsWith("data:application/dash+xml;base64,")) {
+ if (url.startsWith("data:application/dash+xml;base64,")) {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2);
- App.getInstance().setDashData(finalUrl[0].split("base64,")[1]);
- finalUrl[0] = ControlManager.get().getAddress(true) + "dash/proxy.mpd";
- } else if (finalUrl[0].contains(".mpd") || finalUrl[0].contains("type=mpd")) {
+ App.getInstance().setDashData(url.split("base64,")[1]);
+ url = ControlManager.get().getAddress(true) + "dash/proxy.mpd";
+ } else if (url.contains(".mpd") || url.contains("type=mpd")) {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2);
} else {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg);
}
mVideoView.setProgressKey(progressKey);
if (headers != null) {
- mVideoView.setUrl(finalUrl[0], headers);
+ mVideoView.setUrl(url, headers);
} else {
- mVideoView.setUrl(finalUrl[0]);
+ mVideoView.setUrl(url);
}
mVideoView.start();
mController.resetSpeed();
@@ -1157,7 +1158,7 @@ public class PlayActivity extends BaseActivity {
LinkedHashMap> jxs = new LinkedHashMap<>();
String extendName = "";
for (ParseBean p : ApiConfig.get().getParseBeanList()) {
- HashMap data = new HashMap();
+ HashMap data = new HashMap();
data.put("url", p.getUrl());
if (p.getUrl().equals(pb.getUrl())) {
extendName = p.getName();
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
index e46190bc..67b5b48f 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
@@ -55,6 +55,7 @@ public class CollectAdapter extends BaseQuickAdapter
.override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
+ .noFade()
.error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/FastSearchAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/FastSearchAdapter.java
index 8c4b35c1..720afdfe 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/FastSearchAdapter.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/FastSearchAdapter.java
@@ -37,11 +37,12 @@ public class FastSearchAdapter extends BaseQuickAdapter {
item.pic=item.pic.trim();
Picasso.get()
.load(DefaultConfig.checkReplaceProxy(item.pic))
- .transform(new RoundTransformation(MD5.string2MD5(item.pic + "position=" + helper.getLayoutPosition()))
+ .transform(new RoundTransformation(MD5.string2MD5(item.pic))
.centerCorp(true)
- .override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
+ .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
- .error(R.drawable.img_loading_placeholder)
+ .noFade()
+// .error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
ivThumb.setImageResource(R.drawable.img_loading_placeholder);
@@ -92,12 +94,13 @@ public class GridAdapter extends BaseQuickAdapter {
item.pic=item.pic.trim();
Picasso.get()
.load(DefaultConfig.checkReplaceProxy(item.pic))
- .transform(new RoundTransformation(MD5.string2MD5(item.pic + "position=" + helper.getLayoutPosition()))
+ .transform(new RoundTransformation(MD5.string2MD5(item.pic))
.centerCorp(true)
- .override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
+ .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
- .error(R.drawable.img_loading_placeholder)
+ .noFade()
+// .error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
ivThumb.setImageResource(R.drawable.img_loading_placeholder);
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HistoryAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HistoryAdapter.java
index d7022829..008aaa95 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HistoryAdapter.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HistoryAdapter.java
@@ -90,6 +90,7 @@ public class HistoryAdapter extends BaseQuickAdapter {
.override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
+ .noFade()
.error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java
index 0509d7b6..a420bb38 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java
@@ -58,13 +58,15 @@ public class HomeHotVodAdapter extends BaseQuickAdapter
if (!TextUtils.isEmpty(item.pic)) {
Picasso.get()
.load(item.pic)
- .transform(new RoundTransformation(MD5.string2MD5(item.pic + "position=" + helper.getLayoutPosition()))
+ .transform(new RoundTransformation(MD5.string2MD5(item.pic))
.centerCorp(true)
.override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
+ .noFade()
.error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
index 787c41e8..3623e658 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
@@ -514,14 +514,15 @@ public class PlayFragment extends BaseLazyFragment {
}
if (mActivity == null) return;
if (!isAdded()) return;
- final String[] finalUrl = {url};
+ final String finalUrl = url;
requireActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopParse();
if (mVideoView != null) {
mVideoView.release();
- if (finalUrl[0] != null) {
+ if (finalUrl != null) {
+ String url = finalUrl;
try {
int playerType = mVodPlayerCfg.getInt("pl");
if (playerType >= 10) {
@@ -530,7 +531,7 @@ public class PlayFragment extends BaseLazyFragment {
setTip("调用外部播放器" + PlayerHelper.getPlayerName(playerType) + "进行播放", true, false);
boolean callResult = false;
long progress = getSavedProgress(progressKey);
- callResult = PlayerHelper.runExternalPlayer(playerType, requireActivity(), finalUrl[0], playTitle, playSubtitle, headers, progress);
+ callResult = PlayerHelper.runExternalPlayer(playerType, requireActivity(), url, playTitle, playSubtitle, headers, progress);
setTip("调用外部播放器" + PlayerHelper.getPlayerName(playerType) + (callResult ? "成功" : "失败"), callResult, !callResult);
return;
}
@@ -538,20 +539,20 @@ public class PlayFragment extends BaseLazyFragment {
e.printStackTrace();
}
hideTip();
- if (finalUrl[0].startsWith("data:application/dash+xml;base64,")) {
+ if (url.startsWith("data:application/dash+xml;base64,")) {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2);
- App.getInstance().setDashData(finalUrl[0].split("base64,")[1]);
- finalUrl[0] = ControlManager.get().getAddress(true) + "dash/proxy.mpd";
- } else if (finalUrl[0].contains(".mpd") || finalUrl[0].contains("type=mpd")) {
+ App.getInstance().setDashData(url.split("base64,")[1]);
+ url = ControlManager.get().getAddress(true) + "dash/proxy.mpd";
+ } else if (url.contains(".mpd") || url.contains("type=mpd")) {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2);
} else {
PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg);
}
mVideoView.setProgressKey(progressKey);
if (headers != null) {
- mVideoView.setUrl(finalUrl[0], headers);
+ mVideoView.setUrl(url, headers);
} else {
- mVideoView.setUrl(finalUrl[0]);
+ mVideoView.setUrl(url);
}
mVideoView.start();
mController.resetSpeed();
@@ -1185,7 +1186,7 @@ public class PlayFragment extends BaseLazyFragment {
LinkedHashMap> jxs = new LinkedHashMap<>();
String extendName = "";
for (ParseBean p : ApiConfig.get().getParseBeanList()) {
- HashMap data = new HashMap();
+ HashMap data = new HashMap();
data.put("url", p.getUrl());
if (p.getUrl().equals(pb.getUrl())) {
extendName = p.getName();
diff --git a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java
index ce1c94a2..307b9a52 100644
--- a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java
+++ b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java
@@ -15,6 +15,8 @@ import com.squareup.picasso.Picasso;
import java.io.File;
import java.security.cert.CertificateException;
import java.util.ArrayList;
+import java.util.concurrent.PriorityBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
diff --git a/app/src/main/java/com/github/tvbox/osc/util/thunder/Thunder.java b/app/src/main/java/com/github/tvbox/osc/util/thunder/Thunder.java
index 46e2a00b..31f930ef 100644
--- a/app/src/main/java/com/github/tvbox/osc/util/thunder/Thunder.java
+++ b/app/src/main/java/com/github/tvbox/osc/util/thunder/Thunder.java
@@ -104,7 +104,6 @@ public class Thunder {
torrentFileInfoArrayList=new ArrayList<>();
playList=new ArrayList<>();
ed2kList=new ArrayList<>();
- ArrayList jxUrls=new ArrayList<>();
Map urlMap = new HashMap<>();
threadPool.execute(new Runnable() {
@Override
@@ -116,7 +115,6 @@ public class Thunder {
for (Movie.Video.UrlBean.UrlInfo.InfoBean infoBean : urlInfo.beanList) {
boolean isParse=false;
url=infoBean.url;
-// if(jxUrls.contains(url))continue;
if (isMagnet(url) || isThunder(url) || isTorrent(url)) {
if(isThunder(url) )url=XLDownloadManager.getInstance().parserThunderUrl(url);
String link = isThunder(url) ? XLDownloadManager.getInstance().parserThunderUrl(url) : url;
@@ -141,7 +139,7 @@ public class Thunder {
if (currentTask <= 0) {
continue;
}
- int count = 15;
+ int count = 30;
outerLoop:
while (true) {
count--;
@@ -160,13 +158,12 @@ public class Thunder {
TorrentFileInfo[] mSubFileInfo = torrentInfo.mSubFileInfo;
if (mSubFileInfo != null) {
for (TorrentFileInfo sub : mSubFileInfo) {
- if (isMedia(sub.mFileName)) {
+ if (isMedia(sub.mFileName) && sub.mFileSize > 1048576L * 30) {
sub.torrentPath = cache.getAbsolutePath();
playList.add(sub.mFileName + "$tvbox-torrent:" + torrentFileInfoArrayList.size());
torrentFileInfoArrayList.add(sub);
}
}
- jxUrls.add(url);
isParse=true;
break outerLoop;
}
@@ -183,7 +180,7 @@ public class Thunder {
}
}
try {
- Thread.sleep(200);
+ Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
diff --git a/app/src/main/res/layout/item_user_hot_vod.xml b/app/src/main/res/layout/item_user_hot_vod.xml
index 1bde5764..9798b787 100644
--- a/app/src/main/res/layout/item_user_hot_vod.xml
+++ b/app/src/main/res/layout/item_user_hot_vod.xml
@@ -24,8 +24,7 @@
android:layout_marginLeft="@dimen/vs_5"
android:layout_marginTop="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
- android:orientation="horizontal"
- android:visibility="gone">
+ android:orientation="horizontal">