From 9032462238327b971df1a5f72ef343200a5e0103 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 11 十二月 2024 18:13:44 +0800
Subject: [PATCH] 1.问题上报相关 2.问题上报列表相关 3.添加图片上传中断功能 4.图片添加的bug

---
 app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java |  120 +++++++++++++++++++++++-------------------------------------
 1 files changed, 46 insertions(+), 74 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/AddQuestionActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
similarity index 79%
rename from app/src/main/java/com/dayu/pipirrapp/activity/AddQuestionActivity.java
rename to app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
index a75fd74..ba78e09 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/AddQuestionActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -4,7 +4,6 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -26,7 +25,7 @@
 import com.dayu.pipirrapp.bean.net.AddIssueRequest;
 import com.dayu.pipirrapp.bean.net.InsectionResult;
 import com.dayu.pipirrapp.bean.net.UplodFileState;
-import com.dayu.pipirrapp.databinding.ActivityAddQuestionBinding;
+import com.dayu.pipirrapp.databinding.ActivityAddIssueBinding;
 import com.dayu.pipirrapp.fragment.OrderFragment;
 import com.dayu.pipirrapp.net.ApiManager;
 import com.dayu.pipirrapp.net.BaseResponse;
@@ -35,6 +34,7 @@
 import com.dayu.pipirrapp.service.MyLocationService;
 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.ToastUtil;
 import com.dayu.pipirrapp.view.TitleBar;
@@ -44,28 +44,21 @@
 import com.luck.picture.lib.config.PictureMimeType;
 import com.luck.picture.lib.config.SelectMimeType;
 import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
-import com.luck.picture.lib.engine.CompressFileEngine;
 import com.luck.picture.lib.engine.ImageEngine;
 import com.luck.picture.lib.entity.LocalMedia;
 import com.luck.picture.lib.entity.MediaExtraInfo;
 import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener;
-import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener;
-import com.luck.picture.lib.utils.DateUtils;
 import com.luck.picture.lib.utils.DensityUtil;
 import com.luck.picture.lib.utils.MediaUtils;
 import com.luck.picture.lib.utils.PictureFileUtils;
 import com.tencent.bugly.crashreport.CrashReport;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import top.zibin.luban.CompressionPredicate;
-import top.zibin.luban.Luban;
-import top.zibin.luban.OnNewCompressListener;
-import top.zibin.luban.OnRenameListener;
+import retrofit2.Call;
 
 /**
  * AddQuestionActivity -闂涓婃姤
@@ -74,10 +67,10 @@
  * @version 1.0
  * @since 2024-12-09
  */
-public class AddQuestionActivity extends BaseActivity{
-    private String TAG = "AddQuestionActivity";
+public class AddIssueActivity extends BaseActivity {
+    private final String TAG = "AddQuestionActivity";
 
-    ActivityAddQuestionBinding binding;
+    ActivityAddIssueBinding binding;
     RecyclerView mRecyclerView;
     AddPictureAdapter mAdapter;
     int maxSelectNum = 10;//鏈�澶х収鐗�
@@ -97,17 +90,19 @@
             latLonBean = (LatLonBean) o;
         }
     };
-    
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        binding=ActivityAddQuestionBinding.inflate(LayoutInflater.from(this));
+        binding = ActivityAddIssueBinding.inflate(LayoutInflater.from(this));
         setContentView(binding.getRoot());
-        
+        launcherResult = createActivityResultLauncher();
+        initView();
+        startLocation();
     }
 
     void initView() {
-        new TitleBar(this).setTitleText("澶勭悊宸ュ崟").setLeftIco().setLeftIcoListening(v -> AddQuestionActivity.this.finish());
+        new TitleBar(this).setTitleText("涓婃姤闂").setLeftIco().setLeftIcoListening(v -> AddIssueActivity.this.finish());
         mRecyclerView = binding.recycler;
         FullyGridLayoutManager manager = new FullyGridLayoutManager(this,
                 4, GridLayoutManager.VERTICAL, false);
@@ -126,10 +121,10 @@
             @Override
             public void onItemClick(View v, int position) {
                 // 棰勮鍥剧墖銆佽棰戙�侀煶棰�
-                PictureSelector.create(AddQuestionActivity.this)
+                PictureSelector.create(AddIssueActivity.this)
                         .openPreview()
                         .setImageEngine(imageEngine)
-                        .setExternalPreviewEventListener(new AddQuestionActivity.MyExternalPreviewEventListener())
+                        .setExternalPreviewEventListener(new AddIssueActivity.MyExternalPreviewEventListener())
                         .startActivityPreview(position, true, mAdapter.getData());
             }
 
@@ -137,6 +132,11 @@
             public void openPicture() {
                 //娣诲姞鍥剧墖
                 mOpenPicture();
+            }
+
+            @Override
+            public void onDeleteClick(int position) {
+                deleteItem(position);
             }
         });
         binding.dealButton.setOnClickListener(v -> {
@@ -152,13 +152,13 @@
                     if (uplodFileStates.size() > 0) {
                         postData();
                     } else {
-                        ToastUtil.showToast(AddQuestionActivity.this, "璇蜂笂浼犲浘鐗�");
+                        ToastUtil.showToast(AddIssueActivity.this, "璇蜂笂浼犲浘鐗�");
                     }
                 } else {
-                    ToastUtil.showToast(AddQuestionActivity.this, "鍥剧墖姝e湪涓婁紶璇风◢鍚庢彁浜�");
+                    ToastUtil.showToast(AddIssueActivity.this, "鍥剧墖姝e湪涓婁紶璇风◢鍚庢彁浜�");
                 }
             } else {
-                ToastUtil.showToast(AddQuestionActivity.this, "璇疯緭鍏ュ弽棣堝唴瀹�");
+                ToastUtil.showToast(AddIssueActivity.this, "璇疯緭鍏ュ弽棣堝唴瀹�");
             }
         });
     }
@@ -174,7 +174,7 @@
                 .setMaxVideoSelectNum(maxSelectVideoNum)
                 .setImageEngine(imageEngine)
                 //璁剧疆鍥剧墖鍘嬬缉
-                .setCompressEngine(new AddQuestionActivity.ImageFileCompressEngine())
+                .setCompressEngine(new ImageFileCompressEngine())
                 .setSelectedData(mAdapter.getData());
 
         selectionModel.forResult(launcherResult);
@@ -205,6 +205,7 @@
 
         @Override
         public void onPreviewDelete(int position) {
+            deleteItem(position);
             mAdapter.remove(position);
             mAdapter.notifyItemRemoved(position);
         }
@@ -221,10 +222,13 @@
      * @param result
      */
     private void analyticalSelectResults(ArrayList<LocalMedia> result) {
+        //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃
         Set<String> existingPaths = new HashSet<>();
         for (UplodFileState uplodData : uplodFileStates) {
             existingPaths.add(uplodData.getFilePath());
         }
+        //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗�
+
         for (LocalMedia media : result) {
             if (media.getWidth() == 0 || media.getHeight() == 0) {
                 if (PictureMimeType.isHasImage(media.getMimeType())) {
@@ -254,10 +258,10 @@
             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(media.getRealPath());
+                uplodFileState.setFilePath(compressPath);
                 uplodFileStates.add(uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
@@ -278,52 +282,6 @@
 
             }
         });
-    }
-
-
-    /**
-     * 鑷畾涔夊浘鐗囧帇缂�
-     */
-    private static class ImageFileCompressEngine implements CompressFileEngine {
-
-        @Override
-        public void onStartCompress(Context context, ArrayList<Uri> source, OnKeyValueResultCallbackListener call) {
-            Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() {
-                @Override
-                public String rename(String filePath) {
-                    int indexOf = filePath.lastIndexOf(".");
-                    String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg";
-                    return DateUtils.getCreateFileName("CMP_") + postfix;
-                }
-            }).filter(new CompressionPredicate() {
-                @Override
-                public boolean apply(String path) {
-                    if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) {
-                        return true;
-                    }
-                    return !PictureMimeType.isUrlHasGif(path);
-                }
-            }).setCompressListener(new OnNewCompressListener() {
-                @Override
-                public void onStart() {
-
-                }
-
-                @Override
-                public void onSuccess(String source, File compressFile) {
-                    if (call != null) {
-                        call.onCallback(source, compressFile.getAbsolutePath());
-                    }
-                }
-
-                @Override
-                public void onError(String source, Throwable e) {
-                    if (call != null) {
-                        call.onCallback(source, null);
-                    }
-                }
-            }).launch();
-        }
     }
 
 
@@ -363,9 +321,9 @@
             public void onNext(BaseResponse<List<InsectionResult>> t) {
                 try {
                     if (t.isSuccess()) {
-                        ToastUtil.showToastLong(AddQuestionActivity.this, "涓婃姤鎴愬姛");
+                        ToastUtil.showToastLong(AddIssueActivity.this, "涓婃姤鎴愬姛");
                         setResult(OrderFragment.RESULT_REFRESH);
-                        AddQuestionActivity.this.finish();
+                        AddIssueActivity.this.finish();
                     } else {
 
                     }
@@ -400,5 +358,19 @@
         super.onDestroy();
         LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
     }
-    
+
+    /**
+     * 棰勮鍜屽浘鐗囧垪琛ㄥ垹闄ゅ浘鐗囨椂澶勭悊鍒犻櫎浜嬩欢
+     */
+    private void deleteItem(int position) {
+        try {
+            Call<BaseResponse> mCall = uplodFileStates.get(position).getThisCall();
+            if (mCall != null) {
+                mCall.cancel();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        uplodFileStates.remove(position);
+    }
 }

--
Gitblit v1.8.0