From c91d4503a63013be3242120ae0ad9cd1b0b8127e Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 12 十二月 2024 17:18:54 +0800
Subject: [PATCH] 优化定位服务相关代码

---
 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java |  119 ++++++++++++++++++++++++-----------------------------------
 1 files changed, 49 insertions(+), 70 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
index 58a4ea8..2d796c5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -4,8 +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;
 import android.util.Log;
@@ -22,18 +20,21 @@
 import com.dayu.pipirrapp.MyApplication;
 import com.dayu.pipirrapp.adapter.AddPictureAdapter;
 import com.dayu.pipirrapp.bean.db.LatLonBean;
-import com.dayu.pipirrapp.bean.net.AddProcessingResult;
+import com.dayu.pipirrapp.bean.net.AddProcessingRequest;
 import com.dayu.pipirrapp.bean.net.InsectionResult;
 import com.dayu.pipirrapp.bean.net.UplodFileState;
 import com.dayu.pipirrapp.databinding.ActivityOrderDealBinding;
+import com.dayu.pipirrapp.fragment.OrderFragment;
 import com.dayu.pipirrapp.net.ApiManager;
 import com.dayu.pipirrapp.net.BaseResponse;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.net.upload.UploadFileListener;
-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.MyLog;
+import com.dayu.pipirrapp.utils.ServiceUtils;
 import com.dayu.pipirrapp.utils.ToastUtil;
 import com.dayu.pipirrapp.view.TitleBar;
 import com.jeremyliao.liveeventbus.LiveEventBus;
@@ -42,28 +43,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;
 
 /**
  * OrderDealDetailActivity -
@@ -74,7 +68,7 @@
  * @since 2024-11-27
  */
 public class OrderDealActivity extends BaseActivity {
-    private String TAG = "OrderDealActivity";
+    private final String TAG = "OrderDealActivity";
     ActivityOrderDealBinding binding;
     RecyclerView mRecyclerView;
     AddPictureAdapter mAdapter;
@@ -93,6 +87,7 @@
     private Observer<Object> locationObserver = new Observer<Object>() {
         @Override
         public void onChanged(Object o) {
+            MyLog.d("OrderDealActivity>>>locationObserver>>");
             latLonBean = (LatLonBean) o;
         }
     };
@@ -140,6 +135,11 @@
             public void openPicture() {
                 //娣诲姞鍥剧墖
                 mOpenPicture();
+            }
+
+            @Override
+            public void onDeleteClick(int position) {
+                deleteItem(position);
             }
         });
         binding.dealButton.setOnClickListener(v -> {
@@ -208,6 +208,7 @@
 
         @Override
         public void onPreviewDelete(int position) {
+            deleteItem(position);
             mAdapter.remove(position);
             mAdapter.notifyItemRemoved(position);
         }
@@ -224,10 +225,13 @@
      * @param result
      */
     private void analyticalSelectResults(ArrayList<LocalMedia> result) {
+        //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃
         Set<String> existingPaths = new HashSet<>();
         for (UplodFileState uplodData : uplodFileStates) {
             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,13 +264,25 @@
             //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗�
             if (!existingPaths.contains(compressPath)) {
                 UplodFileState uplodFileState = new UplodFileState();
-                uplodFileState.setFilePath(media.getRealPath());
+                uplodFileState.setFilePath(compressPath);
                 uplodFileStates.add(uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
             }
 
-
+            resultPaths.add(media.getCompressPath());
+        }
+        //澶勭悊浠庣浉鍐岃繑鍥炴椂鍙栨秷鐨勫浘鐗囧鐞�
+        existingPaths.removeAll(resultPaths);
+        if (!existingPaths.isEmpty()) {
+            for (String path : existingPaths) {
+                for (UplodFileState uplodFileState : uplodFileStates) {
+                    if (path.equals(uplodFileState.getFilePath())) {
+                        uplodFileState.getThisCall().cancel();
+                        uplodFileStates.remove(uplodFileState);
+                    }
+                }
+            }
         }
         runOnUiThread(new Runnable() {
             @Override
@@ -281,52 +297,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();
-        }
     }
 
 
@@ -352,7 +322,7 @@
      * 涓婃姤澶勭悊缁撴灉
      */
     private void postData() {
-        AddProcessingResult result = new AddProcessingResult();
+        AddProcessingRequest result = new AddProcessingRequest();
         result.setImages(uplodFileStates);
         result.setContent(binding.contentET.getText().toString());
         result.setInspectorId(MyApplication.myApplication.userId);
@@ -368,6 +338,7 @@
                 try {
                     if (t.isSuccess()) {
                         ToastUtil.showToastLong(OrderDealActivity.this, "涓婃姤鎴愬姛");
+                        setResult(OrderFragment.RESULT_REFRESH);
                         OrderDealActivity.this.finish();
                     } else {
 
@@ -385,14 +356,7 @@
      * 寮�濮嬪畾浣嶇浉鍏抽�昏緫
      */
     private void startLocation() {
-        Intent location = new Intent(this, MyLocationService.class);
-        location.putExtra("isSingle", true);
-        //寮�鍚畾浣�
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            startForegroundService(location);
-        } else {
-            startService(location);
-        }
+        ServiceUtils.startLocationService(this,true);
         //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
         LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
     }
@@ -403,4 +367,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