diff --git a/app/build.gradle b/app/build.gradle index 0d9dc51b..85bc0f31 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -113,4 +113,9 @@ dependencies { implementation ('com.google.net.cronet:cronet-okhttp:0.1.0') // implementation 'com.google.android.gms:play-services-cronet:18.0.1' implementation ('org.chromium.net:cronet-embedded:101.4951.41') +} + +tasks.withType(JavaCompile) { +// options.fork = true + options.forkOptions.jvmArgs << "--add-opens=java.base/java.io=ALL-UNNAMED" } \ No newline at end of file diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java index 7830755b..efaabba0 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java @@ -10,6 +10,7 @@ import com.chad.library.adapter.base.BaseViewHolder; import com.github.tvbox.osc.R; import com.github.tvbox.osc.bean.Movie; import com.github.tvbox.osc.picasso.RoundTransformation; +import com.github.tvbox.osc.util.Base64Img; import com.github.tvbox.osc.util.DefaultConfig; import com.github.tvbox.osc.util.MD5; import com.squareup.picasso.MemoryPolicy; @@ -41,16 +42,21 @@ public class GridAdapter extends BaseQuickAdapter { //由于部分电视机使用glide报错 if (!TextUtils.isEmpty(item.pic)) { item.pic=item.pic.trim(); - Picasso.get() - .load(DefaultConfig.checkReplaceProxy(item.pic)) - .transform(new RoundTransformation(MD5.string2MD5(item.pic)) - .centerCorp(true) - .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320)) - .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL)) - .placeholder(R.drawable.img_loading_placeholder) - .noFade() - .error(R.drawable.img_loading_placeholder) - .into(ivThumb); + if(Base64Img.isBase64Image(item.pic)){ + // 如果是 Base64 图片,解码并设置 + ivThumb.setImageBitmap(Base64Img.decodeBase64ToBitmap(item.pic)); + }else { + Picasso.get() + .load(DefaultConfig.checkReplaceProxy(item.pic)) + .transform(new RoundTransformation(MD5.string2MD5(item.pic)) + .centerCorp(true) + .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320)) + .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL)) + .placeholder(R.drawable.img_loading_placeholder) + .noFade() + .error(R.drawable.img_loading_placeholder) + .into(ivThumb); + } } else { ivThumb.setImageResource(R.drawable.img_loading_placeholder); } @@ -92,31 +98,21 @@ public class GridAdapter extends BaseQuickAdapter { //由于部分电视机使用glide报错 if (!TextUtils.isEmpty(item.pic)) { item.pic=item.pic.trim(); -// if(Base64Img.isBase64Image(item.pic)){ -// // 如果是 Base64 图片,解码并设置 -// ivThumb.setImageBitmap(Base64Img.decodeBase64ToBitmap(item.pic)); -// }else { -// Picasso.get() -// .load(DefaultConfig.checkReplaceProxy(item.pic)) -// .transform(new RoundTransformation(MD5.string2MD5(item.pic)) -// .centerCorp(true) -// .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320)) -// .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL)) -// .placeholder(R.drawable.img_loading_placeholder) -// .noFade() -// .error(R.drawable.img_loading_placeholder) -// .into(ivThumb); -// } - Picasso.get() - .load(DefaultConfig.checkReplaceProxy(item.pic)) - .transform(new RoundTransformation(MD5.string2MD5(item.pic)) - .centerCorp(true) - .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320)) - .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL)) - .placeholder(R.drawable.img_loading_placeholder) - .noFade() - .error(R.drawable.img_loading_placeholder) - .into(ivThumb); + if(Base64Img.isBase64Image(item.pic)){ + // 如果是 Base64 图片,解码并设置 + ivThumb.setImageBitmap(Base64Img.decodeBase64ToBitmap(item.pic)); + }else { + Picasso.get() + .load(DefaultConfig.checkReplaceProxy(item.pic)) + .transform(new RoundTransformation(MD5.string2MD5(item.pic)) + .centerCorp(true) + .override(AutoSizeUtils.mm2px(mContext, 240), AutoSizeUtils.mm2px(mContext, 320)) + .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL)) + .placeholder(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/HomeHotVodAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java index a420bb38..2691a6d8 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 @@ -12,6 +12,7 @@ import com.github.tvbox.osc.R; import com.github.tvbox.osc.api.ApiConfig; import com.github.tvbox.osc.bean.Movie; import com.github.tvbox.osc.picasso.RoundTransformation; +import com.github.tvbox.osc.util.Base64Img; import com.github.tvbox.osc.util.DefaultConfig; import com.github.tvbox.osc.util.HawkConfig; import com.github.tvbox.osc.util.MD5; @@ -59,16 +60,21 @@ public class HomeHotVodAdapter extends BaseQuickAdapter + */ +public class Base64Img { + public static boolean isBase64Image(String picUrl) { + return picUrl.startsWith("data:image"); + } + + public static Bitmap decodeBase64ToBitmap(String base64Str) { + // 去掉 Base64 数据的头部前缀,例如 "data:image/png;base64," + String base64Data = base64Str.substring(base64Str.indexOf(",") + 1); + byte[] decodedBytes = Base64.decode(base64Data, Base64.DEFAULT); + return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length); + } +} 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 e85c3c49..03cf19ba 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 @@ -204,10 +204,12 @@ public class OkGoHelper { if (isValidIpAddress(hostname)) { return Collections.singletonList(InetAddress.getByName(hostname)); } - if (map!=null && map.containsKey(hostname)) { + else if (map!=null && map.containsKey(hostname)) { return Objects.requireNonNull(map.get(hostname)); } - return dnsOverHttps.lookup(hostname); + else { + return dnsOverHttps.lookup(hostname); + } } public synchronized void mapHosts(Map hosts) { diff --git a/app/src/main/java/com/github/tvbox/osc/util/live/TxtSubscribe.java b/app/src/main/java/com/github/tvbox/osc/util/live/TxtSubscribe.java index 936c3ac1..565e243f 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/live/TxtSubscribe.java +++ b/app/src/main/java/com/github/tvbox/osc/util/live/TxtSubscribe.java @@ -22,6 +22,8 @@ public class TxtSubscribe { parseTxt(linkedHashMap, str); } } + + //解析m3u后缀 private static void parseM3u(LinkedHashMap>> linkedHashMap, String str) { ArrayList urls; try { @@ -75,6 +77,7 @@ public class TxtSubscribe { return line.startsWith("ua") || line.startsWith("parse") || line.startsWith("click") || line.startsWith("player") || line.startsWith("header") || line.startsWith("format") || line.startsWith("origin") || line.startsWith("referer") || line.startsWith("#EXTHTTP:") || line.startsWith("#EXTVLCOPT:") || line.startsWith("#KODIPROP:"); } + //解析txt后缀 public static void parseTxt(LinkedHashMap>> linkedHashMap, String str) { ArrayList arrayList; try {