Glide support okhttp

pull/123/head
FongMi 3 years ago
parent c00de6cff2
commit 0a9f6f6675
  1. 2
      app/build.gradle
  2. 2
      app/src/main/java/com/fongmi/android/tv/Constant.java
  3. 7
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  4. 5
      app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java
  5. 9
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  6. 27
      app/src/main/java/com/fongmi/android/tv/utils/OkHttpGlideModule.java
  7. 2
      catvod/src/main/java/com/github/catvod/net/OkHttp.java

@ -100,6 +100,8 @@ dependencies {
implementation 'cat.ereza:customactivityoncrash:2.4.0'
implementation 'com.github.bassaer:materialdesigncolors:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.15.1'
implementation 'com.github.bumptech.glide:annotations:4.15.1'
implementation 'com.github.bumptech.glide:okhttp3-integration:4.15.1'
implementation('com.github.thegrizzlylabs:sardine-android:0.8') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' }
implementation 'com.google.android.material:material:1.9.0'
implementation 'com.google.code.gson:gson:' + gsonVersion

@ -21,6 +21,8 @@ public class Constant {
public static final int TIMEOUT_HTTP = 30 * 1000;
//代理超時時間
public static final int TIMEOUT_GITHUB = 5 * 1000;
//代理超時時間
public static final int TIMEOUT_SYNC = 2 * 1000;
//搜尋線程數量
public static final int THREAD_POOL = 5;
}

@ -12,12 +12,12 @@ import androidx.media3.database.DatabaseProvider;
import androidx.media3.database.StandaloneDatabaseProvider;
import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.DefaultDataSource;
import androidx.media3.datasource.DefaultHttpDataSource;
import androidx.media3.datasource.HttpDataSource;
import androidx.media3.datasource.cache.Cache;
import androidx.media3.datasource.cache.CacheDataSource;
import androidx.media3.datasource.cache.NoOpCacheEvictor;
import androidx.media3.datasource.cache.SimpleCache;
import androidx.media3.datasource.okhttp.OkHttpDataSource;
import androidx.media3.exoplayer.DefaultLoadControl;
import androidx.media3.exoplayer.DefaultRenderersFactory;
import androidx.media3.exoplayer.LoadControl;
@ -40,6 +40,7 @@ import com.fongmi.android.tv.bean.Sub;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.net.OkHttp;
import com.google.common.net.HttpHeaders;
import java.util.ArrayList;
@ -47,6 +48,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
public class ExoUtil {
private static HttpDataSource.Factory httpDataSourceFactory;
@ -119,7 +122,7 @@ public class ExoUtil {
}
private static synchronized HttpDataSource.Factory getHttpDataSourceFactory() {
if (httpDataSourceFactory == null) httpDataSourceFactory = new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true);
if (httpDataSourceFactory == null) httpDataSourceFactory = new OkHttpDataSource.Factory((Call.Factory) OkHttp.client());
return httpDataSourceFactory;
}

@ -3,6 +3,7 @@ package com.fongmi.android.tv.server.process;
import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Device;
@ -93,7 +94,7 @@ public class ActionRequestProcess implements RequestProcess {
FormBody.Builder body = new FormBody.Builder();
body.add("url", url);
body.add("targets", App.gson().toJson(History.get(Config.find(url, 0).getId())));
OkHttp.newCall(OkHttp.client(1000), device.getIp().concat("/action?do=sync&type=history"), body.build()).execute();
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&type=history"), body.build()).execute();
} catch (Exception e) {
App.post(() -> Notify.show(e.getMessage()));
}
@ -104,7 +105,7 @@ public class ActionRequestProcess implements RequestProcess {
FormBody.Builder body = new FormBody.Builder();
body.add("targets", App.gson().toJson(Keep.getVod()));
body.add("configs", App.gson().toJson(Config.findUrls()));
OkHttp.newCall(OkHttp.client(1000), device.getIp().concat("/action?do=sync&type=keep"), body.build()).execute();
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&type=keep"), body.build()).execute();
} catch (Exception e) {
App.post(() -> Notify.show(e.getMessage()));
}

@ -13,6 +13,7 @@ import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.DrawableImageViewTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.signature.ObjectKey;
import com.fongmi.android.tv.App;
@ -27,25 +28,25 @@ public class ImgUtil {
public static void load(String url, ImageView view, ImageView.ScaleType scaleType) {
view.setScaleType(scaleType);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_error);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).skipMemoryCache(true).dontAnimate().sizeMultiplier(Prefers.getThumbnail()).signature(new ObjectKey(url + "_" + Prefers.getQuality())).placeholder(R.drawable.ic_img_loading).listener(getListener(view, scaleType)).into(view);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).skipMemoryCache(true).dontAnimate().sizeMultiplier(Prefers.getThumbnail()).signature(new ObjectKey(url + "_" + Prefers.getQuality())).placeholder(R.drawable.ic_img_loading).listener(getListener(view, scaleType)).into(new DrawableImageViewTarget(view).waitForLayout().getView());
}
public static void loadKeep(String url, ImageView view) {
view.setScaleType(ImageView.ScaleType.CENTER);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_error);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).error(R.drawable.ic_img_error).placeholder(R.drawable.ic_img_loading).listener(getListener(view)).into(view);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).error(R.drawable.ic_img_error).placeholder(R.drawable.ic_img_loading).listener(getListener(view)).into(new DrawableImageViewTarget(view).waitForLayout().getView());
}
public static void loadHistory(String url, ImageView view) {
view.setScaleType(ImageView.ScaleType.CENTER);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_error);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).error(R.drawable.ic_img_error).placeholder(R.drawable.ic_img_loading).listener(getListener(view)).into(view);
else Glide.with(App.get()).asBitmap().load(getUrl(url)).error(R.drawable.ic_img_error).placeholder(R.drawable.ic_img_loading).listener(getListener(view)).into(new DrawableImageViewTarget(view).waitForLayout().getView());
}
public static void loadLive(String url, ImageView view) {
view.setVisibility(TextUtils.isEmpty(url) ? View.GONE : View.VISIBLE);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_empty);
else Glide.with(App.get()).asBitmap().load(url).skipMemoryCache(true).dontAnimate().signature(new ObjectKey(url)).error(R.drawable.ic_img_empty).into(view);
else Glide.with(App.get()).asBitmap().load(url).skipMemoryCache(true).dontAnimate().signature(new ObjectKey(url)).error(R.drawable.ic_img_empty).into(new DrawableImageViewTarget(view).waitForLayout().getView());
}
public static Object getUrl(String url) {

@ -0,0 +1,27 @@
package com.fongmi.android.tv.utils;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.AppGlideModule;
import com.github.catvod.net.OkHttp;
import java.io.InputStream;
import okhttp3.Call;
@GlideModule
public class OkHttpGlideModule extends AppGlideModule {
@Override
public void registerComponents(@NonNull Context context, @Nullable Glide glide, Registry registry) {
registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory((Call.Factory) OkHttp.client()));
}
}

@ -59,7 +59,7 @@ public class OkHttp {
}
public static OkHttpClient client(int timeout) {
return new OkHttpClient.Builder().connectTimeout(timeout, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier(SSLSocketFactoryCompat.hostnameVerifier).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert).build();
return new OkHttpClient.Builder().connectTimeout(timeout, TimeUnit.MILLISECONDS).readTimeout(timeout, TimeUnit.MILLISECONDS).writeTimeout(timeout, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier(SSLSocketFactoryCompat.hostnameVerifier).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert).build();
}
public static Call newCall(String url) {

Loading…
Cancel
Save