From 596d0bcbacd8dde70f0bbcfdf07db5cf694220ef Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 08 一月 2025 09:33:20 +0800
Subject: [PATCH] 1.修复上传文件取消上传还会上传bug 2.添加上传视频功能 3.添加关闭activity时关闭上传功能。

---
 app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java |   52 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
index d56f0b0..dea3805 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -30,10 +30,12 @@
 import com.dayu.pipirrapp.net.BaseResponse;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.net.upload.UploadFileListener;
+import com.dayu.pipirrapp.tool.FileUploadUtils;
 import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
 import com.dayu.pipirrapp.tool.GlideEngine;
 import com.dayu.pipirrapp.tool.ImageFileCompressEngine;
 import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.MyLog;
 import com.dayu.pipirrapp.utils.ServiceUtils;
 import com.dayu.pipirrapp.utils.ToastUtil;
 import com.dayu.pipirrapp.view.TitleBar;
@@ -141,6 +143,11 @@
             @Override
             public void onDeleteClick(int position) {
                 deleteItem(position);
+            }
+
+            @Override
+            public void onReUpload(UplodFileState uplodFileState) {
+                uplodeImg(uplodFileState);
             }
         });
         binding.dealButton.setOnClickListener(v -> {
@@ -270,6 +277,7 @@
             Log.i(TAG, "瑁佸壀瀹介珮: " + media.getCropImageWidth() + "x" + media.getCropImageHeight());
             Log.i(TAG, "鏂囦欢澶у皬: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize()));
             Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration());
+            Log.i(TAG, "鎵╁睍鍚�: " + media.getMimeType());
             String compressPath = media.getCompressPath();
             //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗囧苟娣诲姞uplodFileStates涓�
             if (TextUtils.isEmpty(compressPath)) {
@@ -278,6 +286,13 @@
             if (!existingPaths.contains(compressPath)) {
                 UplodFileState uplodFileState = new UplodFileState();
                 uplodFileState.setFilePath(compressPath);
+                if (compressPath.toLowerCase().endsWith(".mp4") || compressPath.toLowerCase().endsWith(".avi") || compressPath.toLowerCase().endsWith(".mkv") || compressPath.toLowerCase().endsWith(".mov")) {
+                    // 杩欐槸瑙嗛鏂囦欢
+                    uplodFileState.setUploadType(UplodFileState.VIDEO_TYPE);
+                } else {
+                    uplodFileState.setUploadType(UplodFileState.IMG_TYPE);
+                }
+                uplodFileState.setExtName(media.getMimeType());
                 uplodFileStates.put(compressPath, uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
@@ -318,11 +333,7 @@
 
     //涓婁紶鍥剧墖
     private void uplodeImg(UplodFileState uplodFileState) {
-        ApiManager.getInstance().uploadFile(this, uplodFileState, state -> {
-
-            uplodFileStates.replace(state.getFilePath(), state);
-            mAdapter.updateProgress(uplodFileState);
-        }, mAdapter);
+        FileUploadUtils.uploadFile(this, uplodFileState, uplodFileStates, mAdapter);
     }
 
     /**
@@ -372,20 +383,35 @@
     protected void onDestroy() {
         super.onDestroy();
         LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+        FileUploadUtils.cancelAllCall(uplodFileStates);
     }
 
     /**
      * 棰勮鍜屽浘鐗囧垪琛ㄥ垹闄ゅ浘鐗囨椂澶勭悊鍒犻櫎浜嬩欢
      */
     private void deleteItem(int position) {
-        try {
-            Call<BaseResponse> mCall = uplodFileStates.get(position).getThisCall();
-            if (mCall != null) {
-                mCall.cancel();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
+        LocalMedia localMedia = mAdapter.getData().get(position);
+        String path;
+        UplodFileState uplodFileState;
+        if (TextUtils.isEmpty(localMedia.getCompressPath())) {
+            uplodFileState = uplodFileStates.get(localMedia.getRealPath());
+        } else {
+            uplodFileState = uplodFileStates.get(localMedia.getCompressPath());
         }
-        uplodFileStates.remove(position);
+        if (uplodFileState != null) {
+            path = uplodFileState.getFilePath();
+            try {
+                Call<BaseResponse> mCall = uplodFileStates.get(path).getThisCall();
+                if (mCall != null) {
+                    mCall.cancel();
+                    MyLog.d("progressRequestBody>>>" + "cancel銆嬨�嬨�媝ath:" + path);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            uplodFileStates.remove(path);
+        }
+
     }
+
 }

--
Gitblit v1.8.0