管灌系统巡查员智能手机App
zuoxiao
2025-01-08 7040f16f0c725cf72df65b70291f999ace6263ac
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》》》path:" + path);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            uplodFileStates.remove(path);
        }
    }
}