毕加索和glide加载https图片的问题处理

This commit is contained in:
jia 2024-06-19 01:01:47 +08:00
parent 487f7c4ee1
commit 816ad0831d
15 changed files with 324 additions and 37 deletions

View File

@ -26,5 +26,5 @@ android.enableJetifier=true
android.useAndroidX=true android.useAndroidX=true
android.useDeprecatedNdk=true android.useDeprecatedNdk=true
versionCode=42 versionCode=43
versionName=4.11.2 versionName=4.11.3

View File

@ -83,6 +83,7 @@ dependencies {
implementation 'de.greenrobot:eventbus:2.4.0' implementation 'de.greenrobot:eventbus:2.4.0'
implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.google.zxing:core:3.3.0' implementation 'com.google.zxing:core:3.3.0'
// //
@ -97,7 +98,10 @@ dependencies {
implementation 'jp.wasabeef:picasso-transformations:2.1.0' implementation 'jp.wasabeef:picasso-transformations:2.1.0'
//Picasso //Picasso
implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.android.material:material:1.0.0'
implementation 'com.github.bumptech.glide:glide:3.7.0' // implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
//Glide //Glide
implementation 'cn.bingoogolapple:bga-refreshlayout:1.1.7@aar' implementation 'cn.bingoogolapple:bga-refreshlayout:1.1.7@aar'
// //
@ -158,5 +162,8 @@ dependencies {
implementation 'com.tencent:mmkv:1.3.3' implementation 'com.tencent:mmkv:1.3.3'
implementation("com.github.bumptech.glide:okhttp3-integration:4.11.0" )
//
// annotationProcessor 'com.github.bumptech.glide:compiler:3.7.0'
} }

View File

@ -27,6 +27,7 @@ import com.ifish.utils.Commons;
import com.ifish.utils.Commons.LoginSPKey; import com.ifish.utils.Commons.LoginSPKey;
import com.ifish.utils.Commons.NetWork; import com.ifish.utils.Commons.NetWork;
import com.ifish.utils.Commons.Text; import com.ifish.utils.Commons.Text;
import com.ifish.utils.GlideApp;
import com.ifish.utils.HttpListener; import com.ifish.utils.HttpListener;
import com.ifish.utils.HttpManager; import com.ifish.utils.HttpManager;
import com.ifish.utils.L; import com.ifish.utils.L;
@ -59,7 +60,7 @@ public class HotSpotConnentDeviceActivity extends BaseActivity {
connectDevice = new ConnectDevice(20000, 1000); connectDevice = new ConnectDevice(20000, 1000);
initTitle("尝试与设备建立连接"); initTitle("尝试与设备建立连接");
ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset); ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset);
Glide.with(this).load(R.drawable.hotconnectgif).asGif().into(iv_wifiset); GlideApp.with(this).load(R.drawable.hotconnectgif).into(iv_wifiset);
sp = SPUtil.getInstance(HotSpotConnentDeviceActivity.this); sp = SPUtil.getInstance(HotSpotConnentDeviceActivity.this);
// device_mac="5ccf7f99e929"; // device_mac="5ccf7f99e929";
// doPostBindDevice(); // doPostBindDevice();

View File

@ -23,6 +23,7 @@ import com.ifish.utils.Commons;
import com.ifish.utils.Commons.LoginSPKey; import com.ifish.utils.Commons.LoginSPKey;
import com.ifish.utils.Commons.NetWork; import com.ifish.utils.Commons.NetWork;
import com.ifish.utils.Commons.Text; import com.ifish.utils.Commons.Text;
import com.ifish.utils.GlideApp;
import com.ifish.utils.HttpListener; import com.ifish.utils.HttpListener;
import com.ifish.utils.HttpManager; import com.ifish.utils.HttpManager;
import com.ifish.utils.SPUtil; import com.ifish.utils.SPUtil;
@ -61,7 +62,7 @@ public class HotSpotConnentDeviceCameraActivity extends BaseActivity {
connectDevice = new ConnectDevice(20000, 1000); connectDevice = new ConnectDevice(20000, 1000);
initTitle("尝试与设备建立连接"); initTitle("尝试与设备建立连接");
ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset); ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset);
Glide.with(this).load(R.drawable.hotconnectgif).asGif().into(iv_wifiset); GlideApp.with(this).load(R.drawable.hotconnectgif).into(iv_wifiset);
sp = SPUtil.getInstance(HotSpotConnentDeviceCameraActivity.this); sp = SPUtil.getInstance(HotSpotConnentDeviceCameraActivity.this);
// device_mac="5ccf7f99e929"; // device_mac="5ccf7f99e929";
// doPostBindDevice(); // doPostBindDevice();

View File

@ -27,6 +27,7 @@ import com.ifish.utils.Commons;
import com.ifish.utils.Commons.LoginSPKey; import com.ifish.utils.Commons.LoginSPKey;
import com.ifish.utils.Commons.NetWork; import com.ifish.utils.Commons.NetWork;
import com.ifish.utils.Commons.Text; import com.ifish.utils.Commons.Text;
import com.ifish.utils.GlideApp;
import com.ifish.utils.HttpListener; import com.ifish.utils.HttpListener;
import com.ifish.utils.HttpManager; import com.ifish.utils.HttpManager;
import com.ifish.utils.L; import com.ifish.utils.L;
@ -61,7 +62,7 @@ public class HotSpotConnentPetDeviceActivity extends BaseActivity {
connectDevice = new ConnectDevice(20000, 1000); connectDevice = new ConnectDevice(20000, 1000);
initTitle("尝试与设备建立连接"); initTitle("尝试与设备建立连接");
ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset); ImageView iv_wifiset = findMyViewById(R.id.iv_wifiset);
Glide.with(this).load(R.drawable.hotconnectgif).asGif().into(iv_wifiset); GlideApp.with(this).load(R.drawable.hotconnectgif).into(iv_wifiset);
sp = SPUtil.getInstance(HotSpotConnentPetDeviceActivity.this); sp = SPUtil.getInstance(HotSpotConnentPetDeviceActivity.this);
// device_mac="5ccf7f99e929"; // device_mac="5ccf7f99e929";
// doPostBindDevice(); // doPostBindDevice();

View File

@ -329,12 +329,9 @@ public class MainSixControlActivity extends BaseGradeActivity implements SwipeRe
private void ReviewBrand() { private void ReviewBrand() {
try {//展示厂家 try {//展示厂家
if (Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0)).getVenderList()!=null) {//厂家为空则展示默认的鱼影 if (Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0)).getVenderList()!=null) {//厂家为空则展示默认的鱼影
String imageName = HttpManager.Store_URL+Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0))
.getVenderList().getLogo();
Picasso.with(MainSixControlActivity.this) Picasso.with(MainSixControlActivity.this)
.load(imageName.replace("https","http")).error(R.drawable.ifish_logo_default) .load(HttpManager.Store_URL+Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0))
.getVenderList().getLogo()).error(R.drawable.ifish_logo_default)
.placeholder(getDrawable(R.drawable.ifish_logo_default)) .placeholder(getDrawable(R.drawable.ifish_logo_default))
.into(iv_left); .into(iv_left);
String brandName = Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0)).getVenderList().getBrandName(); String brandName = Commons.DEVICE.get(sp.getInt(Commons.LoginSPKey.Position, 0)).getVenderList().getBrandName();

View File

@ -1,12 +1,16 @@
package com.ifish.activity; package com.ifish.activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.ifish.baseclass.BaseActivity; import com.ifish.baseclass.BaseActivity;
@ -36,128 +40,129 @@ public class ShowDeviceImageActivity extends BaseActivity {
if(device_type != 0){ if(device_type != 0){
switch (device_type){ switch (device_type){
case R.id.iv_no_connect: case R.id.iv_no_connect:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.no_connect_image).listener(new RequestListener<Integer, GlideDrawable>() {
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.no_connect_image).listener(new RequestListener< Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_camera: case R.id.iv_camera:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.camera_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.camera_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_move_camera: case R.id.iv_move_camera:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.move_camera_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.move_camera_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_sw7: case R.id.iv_sw7:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw7_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw7_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_sw10: case R.id.iv_sw10:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw10_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw10_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_cw2: case R.id.iv_cw2:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.cw2_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.cw2_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_sw1sw6: case R.id.iv_sw1sw6:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw1_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.sw1_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }
}).into(iv_show); }).into(iv_show);
break; break;
case R.id.iv_wy01: case R.id.iv_wy01:
Glide.with(ShowDeviceImageActivity.this).load(R.drawable.wy01_image).listener(new RequestListener<Integer, GlideDrawable>() { Glide.with(ShowDeviceImageActivity.this).load(R.drawable.wy01_image).listener(new RequestListener<Drawable>() {
@Override @Override
public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) { public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Drawable> target, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试"); ToastUtil.show(getApplicationContext(),"加载失败,请稍后再试");
return false; return false;
} }
@Override @Override
public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { public boolean onResourceReady(Drawable drawable, Object o, Target<Drawable> target, DataSource dataSource, boolean b) {
progressDialog.setVisibility(View.GONE); progressDialog.setVisibility(View.GONE);
return false; return false;
} }

View File

@ -10,6 +10,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.ifish.activity.EditVideoActivity; import com.ifish.activity.EditVideoActivity;
import com.ifish.activity.R; import com.ifish.activity.R;
import com.ifish.basebean.IfishVideo; import com.ifish.basebean.IfishVideo;
@ -69,7 +70,11 @@ public class VideoListAdapter extends BaseAdapter {
} }
final IfishVideo bean = list.get(position); final IfishVideo bean = list.get(position);
if (bean!=null) { if (bean!=null) {
Glide.with(context).load(HttpManager.VIDEO_IMG_URL+bean.userId+"/"+ bean.commodityImg).placeholder(R.drawable.error_lookfishlist).error(R.drawable.error_lookfishlist).into(holder.iv_commodityImg);
Glide.with(context).load(HttpManager.VIDEO_IMG_URL+bean.userId+"/"+ bean.commodityImg)
.apply( new RequestOptions().placeholder(R.drawable.error_lookfishlist)
.error(R.drawable.error_lookfishlist))
.into(holder.iv_commodityImg);
holder.tv_commodityName.setText(bean.commodityName); holder.tv_commodityName.setText(bean.commodityName);
holder.tv_click.setText("浏览次数:"+bean.click+""); holder.tv_click.setText("浏览次数:"+bean.click+"");
try { try {

View File

@ -52,4 +52,5 @@ public class LiveRoomInfo implements Serializable {
public LiveRoomInfo(String roomId) { public LiveRoomInfo(String roomId) {
this.roomId = roomId; this.roomId = roomId;
} }
} }

View File

@ -30,15 +30,29 @@ import com.alibaba.sdk.android.push.huawei.HuaWeiRegister;
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.alibaba.sdk.android.push.register.MiPushRegister; import com.alibaba.sdk.android.push.register.MiPushRegister;
import com.ifish.activity.BuildConfig; import com.ifish.activity.BuildConfig;
import com.ifish.utils.ImageDownLoader;
import com.ifish.utils.KVUtil; import com.ifish.utils.KVUtil;
import com.ifish.utils.SystemUtil; import com.ifish.utils.SystemUtil;
import com.ifish.utils.TrustAllCerts;
import com.p2p.core.P2PSpecial.P2PSpecial; import com.p2p.core.P2PSpecial.P2PSpecial;
//import com.tencent.bugly.crashreport.CrashReport; //import com.tencent.bugly.crashreport.CrashReport;
import com.squareup.picasso.Picasso;
import com.tencent.mmkv.MMKV; import com.tencent.mmkv.MMKV;
import com.tendcloud.tenddata.TCAgent; import com.tendcloud.tenddata.TCAgent;
import com.umeng.commonsdk.UMConfigure; import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig; import com.umeng.socialize.PlatformConfig;
import java.security.SecureRandom;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import okhttp3.OkHttpClient;
/** /**
* @author Jacky dada * @author Jacky dada
* @ClassName: BaseApplication * @ClassName: BaseApplication
@ -79,6 +93,7 @@ public class BaseApplication extends MultiDexApplication {
initLog(); initLog();
//初始化MMKV //初始化MMKV
// KVUtil.init(this); // KVUtil.init(this);
initPicasso();
} }
/** /**
@ -240,4 +255,65 @@ public class BaseApplication extends MultiDexApplication {
String processName = SystemUtil.getProcessName(this); String processName = SystemUtil.getProcessName(this);
return packageName.equals(processName); return packageName.equals(processName);
} }
/**
* 初始化picasso使用okhttp作为网络请求框架
*/
private void initPicasso() {
Picasso
.setSingletonInstance(new Picasso.Builder(this).
downloader(new ImageDownLoader(getSOkHttpClient())).loggingEnabled(true)
.build());
}
/**
* 创建全局OkHttpClient对象
* <p>
* OkHttpClient 用于管理所有的请求内部支持并发
* 所以我们不必每次请求都创建一个 OkHttpClient 对象这是非常耗费资源的接下来就是创建一个 Request 对象了
*
* @return
*/
public static OkHttpClient getSOkHttpClient() {
//创建okhttp的请求对象 参考地址 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html
// if (sOkHttpClient == null) {
// sOkHttpClient =
return new OkHttpClient.Builder()
.readTimeout(20000, TimeUnit.SECONDS)//设置读取超时时间
.writeTimeout(20000, TimeUnit.SECONDS)//设置写的超时时间
.connectTimeout(20000, TimeUnit.SECONDS)//设置连接超时时间
.sslSocketFactory(createSSLSocketFactory()) //添加信任所有证书
.hostnameVerifier(new HostnameVerifier() { //信任规则全部信任
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
})
.build();
// }
// return sOkHttpClient;
}
/**
* 测试环境https添加全部信任
* okhttp的配置
*
* @return
*/
private static SSLSocketFactory createSSLSocketFactory() {
SSLSocketFactory ssfFactory = null;
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
ssfFactory = sc.getSocketFactory();
} catch (Exception e) {
}
return ssfFactory;
}
} }

View File

@ -188,6 +188,8 @@ public class LookFishLeftFragment extends BaseV4Fragment implements BGARefreshLa
*/ */
position=position-2;//自定义GridView 添加头部后position改变 position=position-2;//自定义GridView 添加头部后position改变
Intent i =new Intent(getActivity(),LookFishMonitorActivity.class); Intent i =new Intent(getActivity(),LookFishMonitorActivity.class);
L.i(this.getClass().getName() + "----------------onCreate"+liveRoomList.get(position).toString());
i.putExtra("LiveRoomInfo",liveRoomList.get(position)); i.putExtra("LiveRoomInfo",liveRoomList.get(position));
startActivity(i); startActivity(i);
AnimationUtil.startAnimation(getActivity()); AnimationUtil.startAnimation(getActivity());

View File

@ -0,0 +1,77 @@
package com.ifish.utils;
import android.net.Uri;
import com.squareup.picasso.Downloader;
import com.squareup.picasso.NetworkPolicy;
import java.io.IOException;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import okhttp3.Request;
public class ImageDownLoader implements Downloader {
/* OkHttpClient client = new OkHttpClient.Builder()
.protocols(Collections.singletonList(Protocol.HTTP_1_1))
.build();*/
private OkHttpClient client= null;
public ImageDownLoader(OkHttpClient okHttpClient) {
this.client = okHttpClient;
}
@Override
public Response load(Uri uri, int networkPolicy) throws IOException {
CacheControl cacheControl = null;
if (networkPolicy != 0) {
if (NetworkPolicy.isOfflineOnly(networkPolicy)) {
cacheControl = CacheControl.FORCE_CACHE;
} else {
CacheControl.Builder builder = new CacheControl.Builder();
if (!NetworkPolicy.shouldReadFromDiskCache(networkPolicy)) {
builder.noCache();
}
if (!NetworkPolicy.shouldWriteToDiskCache(networkPolicy)) {
builder.noStore();
}
cacheControl = builder.build();
}
}
Request.Builder builder = new Request.Builder().url(uri.toString());
if (cacheControl != null) {
builder.cacheControl(cacheControl);
}
okhttp3.Response response = client.newCall(builder.build()).execute();
int responseCode = response.code();
if (responseCode >= 300) {
response.body().close();
throw new ResponseException(responseCode + " " + response.message(), networkPolicy,
responseCode);
}
boolean fromCache = response.cacheResponse() != null;
ResponseBody responseBody = response.body();
return new Response(responseBody.byteStream(), fromCache, responseBody.contentLength());
}
@Override
public void shutdown() {
Cache cache = client.cache();
if (cache != null) {
try {
cache.close();
} catch (IOException ignored) {
}
}
}
}

View File

@ -0,0 +1,33 @@
package com.ifish.utils;
import android.annotation.SuppressLint;
import android.content.Context;
import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
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 java.io.InputStream;
@GlideModule
public class OkHttpAppGlideModule extends AppGlideModule {
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
super.applyOptions(context, builder);
}
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
super.registerComponents(context, glide, registry);
//设置请求方式为okhttp 并设置okhttpClient的证书及超时时间
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(UnsafeOkHttpClient.getUnsafeOkHttpClient());
registry.replace(GlideUrl.class, InputStream.class,factory);
}
}

View File

@ -0,0 +1,20 @@
package com.ifish.utils;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class TrustAllCerts implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
@Override
public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
}

View File

@ -0,0 +1,61 @@
package com.ifish.utils;
import java.security.cert.CertificateException;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import okhttp3.OkHttpClient;
public class UnsafeOkHttpClient {
public static OkHttpClient getUnsafeOkHttpClient() {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
builder.connectTimeout(20, TimeUnit.SECONDS);
builder.readTimeout(20,TimeUnit.SECONDS);
OkHttpClient okHttpClient = builder.build();
return okHttpClient;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}