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