app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -75,7 +75,9 @@ RecyclerView mRecyclerView; AddPictureAdapter mAdapter; int maxSelectNum = 10;//最大照片 int maxSelectVideoNum = 0;//最大视频 int maxSelectVideoNum = 3;//最大视频 int videoMaxSecond = 60; private final List<LocalMedia> mData = new ArrayList<>(); private ActivityResultLauncher<Intent> launcherResult; private ImageEngine imageEngine; @@ -151,7 +153,7 @@ if (!TextUtils.isEmpty(binding.contentET.getText().toString())) { if (isAllPost) { if (uplodFileStates.size() > 0) { if (!uplodFileStates.isEmpty()) { postData(); } else { ToastUtil.showToast(AddIssueActivity.this, "请上传图片"); @@ -171,12 +173,20 @@ private void mOpenPicture() { // 进入相册 PictureSelectionModel selectionModel = PictureSelector.create(this) .openGallery(SelectMimeType.ofImage()) .openGallery(SelectMimeType.ofAll()) .setMaxSelectNum(maxSelectNum) .setMaxVideoSelectNum(maxSelectVideoNum) .setImageEngine(imageEngine) //设置图片压缩 .setCompressEngine(new ImageFileCompressEngine()) //设置视频图片一起在相册选择 .isWithSelectVideoImage(true) //设置最大视频时长 .setRecordVideoMaxSecond(videoMaxSecond) // 过滤视频最大时长 .setFilterVideoMaxSecond(videoMaxSecond) // 拍照是否纠正旋转图片 .isCameraRotateImage(true) .setSelectedData(mAdapter.getData()); selectionModel.forResult(launcherResult); @@ -262,6 +272,9 @@ Log.i(TAG, "文件时长: " + media.getDuration()); String compressPath = media.getCompressPath(); //判断是否有这个路径,没有的话上传该图片并添加uplodFileStates中 if (TextUtils.isEmpty(compressPath)) { compressPath = media.getRealPath(); } if (!existingPaths.contains(compressPath)) { UplodFileState uplodFileState = new UplodFileState(); uplodFileState.setFilePath(compressPath); @@ -305,12 +318,10 @@ //上传图片 private void uplodeImg(UplodFileState uplodFileState) { ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() { @Override public void onBack(UplodFileState state) { ApiManager.getInstance().uploadFile(this, uplodFileState, state -> { uplodFileStates.replace(state.getFilePath(), state); mAdapter.updateProgress(uplodFileState); } }, mAdapter); } app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
@@ -2,6 +2,7 @@ import android.content.Context; import android.net.Uri; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -44,7 +45,7 @@ private final ArrayList<LocalMedia> list = new ArrayList<>(); Map<String, UplodFileState> fileStates; private int selectMax = 9; private Context mContext; private final Context mContext; public AddPictureAdapter(Context context, List<LocalMedia> result, Map<String, UplodFileState> fileStates) { @@ -162,7 +163,15 @@ } // 更新进度 UplodFileState uplodFileState = fileStates.get(media.getCompressPath()); UplodFileState uplodFileState; if (TextUtils.isEmpty(media.getCompressPath())) { uplodFileState = fileStates.get(media.getRealPath()); } else { uplodFileState = fileStates.get(media.getCompressPath()); } if (uplodFileState != null) { uplodFileState.setAdapterPosition(position); MyLog.d("progressRequestBodyHolder>>>" + "State:" + uplodFileState.getState() + ">>>position:" + position + ">>>Progress: " + uplodFileState.getProgress()); @@ -181,7 +190,11 @@ viewHolder.circleProgressView.setVisibility(View.GONE); } else { viewHolder.maskLayerBg.setVisibility(View.VISIBLE); viewHolder.postError.setVisibility(View.VISIBLE); viewHolder.circleProgressView.setVisibility(View.GONE); } } //itemView 的点击事件 if (mItemClickListener != null) { app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -18,8 +18,6 @@ import com.dayu.pipirrapp.net.subscribers.CodeListener; import com.dayu.pipirrapp.net.subscribers.ProgressSubscriber; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.net.upload.IMGProgressLisener; import com.dayu.pipirrapp.net.upload.ProgressListener; import com.dayu.pipirrapp.net.upload.ProgressRequestBody; import com.dayu.pipirrapp.net.upload.UploadFileListener; import com.dayu.pipirrapp.utils.CleanDataUtils; @@ -27,7 +25,6 @@ import com.dayu.pipirrapp.utils.MyJsonParser; import com.dayu.pipirrapp.utils.MyLog; import com.dayu.pipirrapp.utils.NetUtils; import com.google.gson.Gson; import com.google.gson.internal.LinkedTreeMap; import java.io.File; @@ -65,7 +62,7 @@ ApiService apiService; // 管理订阅事件 private CompositeDisposable compositeDisposable = new CompositeDisposable(); private final CompositeDisposable compositeDisposable = new CompositeDisposable(); /** * 初始化通信框架 @@ -301,6 +298,7 @@ */ public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener, final AddPictureAdapter adapter) { MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath() ); if (!TextUtils.isEmpty(uplodData.getFilePath())) { File file = new File(uplodData.getFilePath()); RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); ProgressRequestBody progressRequestBody = new ProgressRequestBody(requestBody, (bytesWritten, contentLength, done) -> { @@ -345,6 +343,7 @@ @Override public void onFailure(Call<BaseResponse> call, Throwable t) { MyLog.d("progressRequestBody>>>" + "onFailure:"); if (uplodData.getNumber() <= uplodFilerepeatSize) { uplodData.setNumber(uplodData.getNumber() + 1); uplodData.setState(2); @@ -354,6 +353,11 @@ } } }); } else { uplodData.setState(UplodFileState.STATE_ERROR); listener.onBack(uplodData); } } app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
@@ -17,7 +17,7 @@ public class RetrofitClient { private static RetrofitClient mInstance; private Retrofit retrofit; private final Retrofit retrofit; private static final int READ_TIME_OUT = 10; private static final int CONNECT_TIME_OUT = 10; @@ -36,7 +36,7 @@ //添加日志拦截器 //添加数据请求统一处理拦截器 // if (BuildConfig.DEBUG) { // builder.addInterceptor(loggingInterceptor); builder.addInterceptor(loggingInterceptor); // } OkHttpClient client = builder.build();