From dde9027478b772dd60371937413ac2838c4f3bbd Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 11 二月 2025 09:56:33 +0800
Subject: [PATCH] 1.修改library名称 2.取水口接口相关代码

---
 app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java |  117 ++++++++++++++++++++++++----------------------------------
 1 files changed, 49 insertions(+), 68 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 8c3fa36..d0f5976 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;
@@ -75,7 +77,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;
@@ -140,6 +144,11 @@
             public void onDeleteClick(int position) {
                 deleteItem(position);
             }
+
+            @Override
+            public void onReUpload(UplodFileState uplodFileState) {
+                FileUploadUtils.uploadFile(AddIssueActivity.this, uplodFileState, uplodFileStates, mAdapter);
+            }
         });
         binding.dealButton.setOnClickListener(v -> {
             boolean isAllPost = true;
@@ -151,7 +160,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 +180,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);
@@ -224,14 +241,6 @@
      * @param result
      */
     private void analyticalSelectResults(ArrayList<LocalMedia> result) {
-        //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃
-        Set<String> existingPaths = new HashSet<>();
-        for (UplodFileState uplodData : uplodFileStates.values()) {
-            existingPaths.add(uplodData.getFilePath());
-        }
-        //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗�
-        Set<String> resultPaths = new HashSet<>();
-
         for (LocalMedia media : result) {
             if (media.getWidth() == 0 || media.getHeight() == 0) {
                 if (PictureMimeType.isHasImage(media.getMimeType())) {
@@ -260,59 +269,16 @@
             Log.i(TAG, "瑁佸壀瀹介珮: " + media.getCropImageWidth() + "x" + media.getCropImageHeight());
             Log.i(TAG, "鏂囦欢澶у皬: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize()));
             Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration());
-            String compressPath = media.getCompressPath();
-            //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗囧苟娣诲姞uplodFileStates涓�
-            if (!existingPaths.contains(compressPath)) {
-                UplodFileState uplodFileState = new UplodFileState();
-                uplodFileState.setFilePath(compressPath);
-                uplodFileStates.put(compressPath, uplodFileState);
-                // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
-                uplodeImg(uplodFileState);
-            }
-            resultPaths.add(media.getCompressPath());
+            Log.i(TAG, "鎵╁睍鍚�: " + media.getMimeType());
+            FileUploadUtils.creatAndUploadFile(this, media, uplodFileStates, mAdapter);
         }
-        //澶勭悊浠庣浉鍐岃繑鍥炴椂鍙栨秷鐨勫浘鐗囧鐞�
-        existingPaths.removeAll(resultPaths);
-        if (!existingPaths.isEmpty()) {
-            List<UplodFileState> toRemove = new ArrayList<>();
-            for (String path : existingPaths) {
-                for (UplodFileState uplodFileState : uplodFileStates.values()) {
-                    if (path.equals(uplodFileState.getFilePath())) {
-                        uplodFileState.getThisCall().cancel();
-                        toRemove.add(uplodFileState);
-                    }
-                }
-            }
-            for (UplodFileState removeFile : toRemove) {
-                uplodFileStates.remove(removeFile.getFilePath());
-            }
-        }
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                boolean isMaxSize = result.size() == mAdapter.getSelectMax();
-                int oldSize = mAdapter.getData().size();
-                mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize);
-                mAdapter.getData().clear();
 
-                mAdapter.getData().addAll(result);
-                mAdapter.notifyItemRangeInserted(0, result.size());
-
-            }
-        });
+        // 鑾峰彇 result 涓病鏈夎�� uplodFileStates 涓湁鐨勫湴鍧�
+        FileUploadUtils.cancelRemovedUploads(result, uplodFileStates);
+        // 鏇存柊UI
+        FileUploadUtils.updateUI(result, mAdapter);
     }
 
-
-    //涓婁紶鍥剧墖
-    private void uplodeImg(UplodFileState uplodFileState) {
-        ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() {
-            @Override
-            public void onBack(UplodFileState state) {
-                uplodFileStates.replace(state.getFilePath(), state);
-                mAdapter.updateProgress(uplodFileState);
-            }
-        }, mAdapter);
-    }
 
     /**
      * 涓婃姤澶勭悊缁撴灉
@@ -361,20 +327,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 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