From 596d0bcbacd8dde70f0bbcfdf07db5cf694220ef Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 08 一月 2025 09:33:20 +0800 Subject: [PATCH] 1.修复上传文件取消上传还会上传bug 2.添加上传视频功能 3.添加关闭activity时关闭上传功能。 --- app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java | 58 ++++++++ app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 52 +++++-- app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java | 24 +++ app/src/main/java/com/dayu/pipirrapp/net/Constants.java | 7 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 57 +++++-- app/src/main/res/layout/activity_change_pass_word.xml | 12 + app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java | 6 app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java | 24 ++ app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java | 46 +++-- app/src/main/res/layout/item_add_filter_image.xml | 30 ++-- app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java | 52 +++++- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 18 +- app/src/main/java/com/dayu/pipirrapp/net/ApiService.java | 12 + app/build.gradle | 9 + 14 files changed, 302 insertions(+), 105 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 39ae300..7cd0c47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,7 +50,11 @@ } buildTypes { + debug{ + buildConfigField "boolean", "DEBUG", "true" + } release { + buildConfigField "boolean", "DEBUG", "false" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } @@ -59,7 +63,10 @@ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - + // 鍚敤 buildConfig 鐗规�� + buildFeatures { + buildConfig true + } dataBinding { enabled = true; } 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 d56f0b0..dea3805 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; @@ -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銆嬨�嬨�媝ath:" + path); + } + } catch (Exception e) { + e.printStackTrace(); + } + uplodFileStates.remove(path); + } + } + } 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 aa18d33..fef6b3d 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java @@ -29,6 +29,7 @@ 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; @@ -79,8 +80,8 @@ private final List<LocalMedia> mData = new ArrayList<>(); private ActivityResultLauncher<Intent> launcherResult; private ImageEngine imageEngine; -// List<UplodFileState> uplodFileStates = new ArrayList<>(); -Map<String, UplodFileState> uplodFileStates = new HashMap<>(); + // List<UplodFileState> uplodFileStates = new ArrayList<>(); + Map<String, UplodFileState> uplodFileStates = new HashMap<>(); String workOrderId; LatLonBean latLonBean; @@ -143,6 +144,12 @@ @Override public void onDeleteClick(int position) { deleteItem(position); + } + + @Override + public void onReUpload(UplodFileState uplodFileState) { + uplodFileState.setState(UplodFileState.STATE_UPDING); + uplodeImg(uplodFileState); } }); binding.dealButton.setOnClickListener(v -> { @@ -265,9 +272,18 @@ Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration()); String compressPath = media.getCompressPath(); //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗� + if (TextUtils.isEmpty(compressPath)) { + compressPath = media.getRealPath(); + } 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); + } uplodFileStates.put(compressPath, uplodFileState); // 鎵ц涓婁紶鍥剧墖鐨勬搷浣� uplodeImg(uplodFileState); @@ -306,13 +322,7 @@ //涓婁紶鍥剧墖 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); + FileUploadUtils.uploadFile(this, uplodFileState, uplodFileStates, mAdapter); } /** @@ -363,20 +373,33 @@ 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銆嬨�嬨�媝ath:" + path); + } + } catch (Exception e) { + e.printStackTrace(); + } + uplodFileStates.remove(path); + } } } diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java index 71b52a3..7302fde 100644 --- a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java @@ -122,6 +122,7 @@ }); viewHolder.mIvDel.setVisibility(View.INVISIBLE); viewHolder.circleProgressView.setVisibility(View.GONE); + viewHolder.maskLayerBg.setVisibility(View.GONE); } else { //鍒犻櫎鍥剧墖 viewHolder.mIvDel.setVisibility(View.VISIBLE); @@ -163,19 +164,16 @@ } // 鏇存柊杩涘害 - UplodFileState uplodFileState; - if (TextUtils.isEmpty(media.getCompressPath())) { - uplodFileState = fileStates.get(media.getRealPath()); - } else { - uplodFileState = fileStates.get(media.getCompressPath()); - } - - + UplodFileState uplodFileState = TextUtils.isEmpty(media.getCompressPath()) + ? fileStates.get(media.getRealPath()) + : fileStates.get(media.getCompressPath()); if (uplodFileState != null) { uplodFileState.setAdapterPosition(position); MyLog.d("progressRequestBodyHolder>>>" + "State:" + uplodFileState.getState() + ">>>position:" + position + ">>>Progress: " + uplodFileState.getProgress()); if (uplodFileState.getState() == UplodFileState.STATE_UPDING) { + MyLog.d("progressRequestBodyHolder>>>" + "姝e湪涓婁紶"); + viewHolder.postError.setVisibility(View.GONE); if (uplodFileState.getProgress() < 100) { viewHolder.maskLayerBg.setVisibility(View.VISIBLE); viewHolder.circleProgressView.setVisibility(View.VISIBLE); @@ -185,10 +183,12 @@ viewHolder.circleProgressView.setVisibility(View.GONE); viewHolder.maskLayerBg.setVisibility(View.GONE); } - } else if (fileStates.get(media.getCompressPath()).getState() == UplodFileState.STATE_DONE) { + } else if (uplodFileState.getState() == UplodFileState.STATE_DONE) { + MyLog.d("progressRequestBodyHolder>>>" + "瀹屾垚"); viewHolder.maskLayerBg.setVisibility(View.GONE); viewHolder.circleProgressView.setVisibility(View.GONE); } else { + MyLog.d("progressRequestBodyHolder>>>" + "閿欒"); viewHolder.maskLayerBg.setVisibility(View.VISIBLE); viewHolder.postError.setVisibility(View.VISIBLE); viewHolder.circleProgressView.setVisibility(View.GONE); @@ -202,11 +202,14 @@ int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); mItemClickListener.onItemClick(v, adapterPosition); }); + viewHolder.postError.setOnClickListener(v -> { + mItemClickListener.onReUpload(uplodFileState); + }); } if (mItemLongClickListener != null) { viewHolder.itemView.setOnLongClickListener(v -> { - int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + int adapterPosition = viewHolder.getBindingAdapterPosition(); mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v); return true; }); @@ -224,20 +227,18 @@ // 鏇存柊杩涘害鍙傛暟 if (fileStates.containsKey(uplodFileState.getFilePath())) { + // 鑾峰彇宸叉湁鐨� UplodFileState 瀵硅薄骞舵洿鏂拌繘搴� + UplodFileState existingState = fileStates.get(uplodFileState.getFilePath()); + int position = existingState.getAdapterPosition(); + existingState.setState(uplodFileState.getState()); if (uplodFileState.getState() == 0) { - // 鑾峰彇宸叉湁鐨� UplodFileState 瀵硅薄骞舵洿鏂拌繘搴� - UplodFileState existingState = fileStates.get(uplodFileState.getFilePath()); + existingState.setState(uplodFileState.getState()); existingState.setProgress(uplodFileState.getProgress()); // 鏇存柊杩涘害 // 鑾峰彇杩涘害鏇存柊椤圭殑浣嶇疆 - int position = existingState.getAdapterPosition(); - if (position != RecyclerView.NO_POSITION) { - // 閫氱煡閫傞厤鍣ㄥ埛鏂版寚瀹氫綅缃殑椤� - notifyItemChanged(position); - } - } else if (uplodFileState.getState() == 2) { - } - + if (position != RecyclerView.NO_POSITION) { + notifyItemChanged(position); + } } } @@ -267,6 +268,11 @@ * @param position */ void onDeleteClick(int position); + + /** + * 涓婁紶澶辫触鍚庨噸鏂颁笂浼� + */ + void onReUpload(UplodFileState uplodFileState); } private OnItemLongClickListener mItemLongClickListener; diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java index 9b8f46d..32f489e 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java @@ -18,6 +18,10 @@ public final static int STATE_DONE = 1; //涓婁紶澶辫触 public final static int STATE_ERROR = 2; + //鍥剧墖绫诲瀷 + public final static int IMG_TYPE = 1; + //瑙嗛绫诲瀷 + public final static int VIDEO_TYPE = 2; //0姝e湪涓婁紶 1涓婁紶瀹屾垚 2涓婁紶澶辫触 int state = 0; @@ -35,6 +39,26 @@ int progress; //adapter涓殑position int adapterPosition = -1; + //涓婁紶绫诲瀷 + int uploadType; + //鎵╁睍鍚� + String extName; + + public String getExtName() { + return extName; + } + + public void setExtName(String extName) { + this.extName = extName; + } + + public int getUploadType() { + return uploadType; + } + + public void setUploadType(int uploadType) { + this.uploadType = uploadType; + } public int getAdapterPosition() { return adapterPosition; diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java index aff517f..90d36d6 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -556,13 +556,16 @@ public void setMapMarker(MarkerBean markerBean) { if (markerBean != null) { if (webViewIsFinished) { - mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() { - @Override - public void onReceiveValue(String value) { - } - }); - markerBeanSet.put(markerBean.getId(), markerBean); - + if (!TextUtils.isEmpty(markerBean.getLng()) && !TextUtils.isEmpty(markerBean.getLat())) { + mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() { + @Override + public void onReceiveValue(String value) { + } + }); + markerBeanSet.put(markerBean.getId(), markerBean); + } else { + MyLog.d("setMapMarker>" + markerBean.getName() + "缁忕含搴︿负绌�"); + } } else { webNoFinishMarkerData.add(markerBean); } @@ -752,7 +755,6 @@ confirmDialog.show(); }); } - @Override diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java index b040919..7e5671c 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java @@ -1,5 +1,8 @@ package com.dayu.pipirrapp.net; +import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_DONE; +import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_ERROR; +import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_UPDING; import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; import android.annotation.SuppressLint; @@ -290,15 +293,17 @@ // } /** - * 涓婁紶鏂囦欢 + * 涓婁紶鍥剧墖鏂囦欢 * * @param context * @param uplodData * @param listener */ public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener, final AddPictureAdapter adapter) { - MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath()); + if (!TextUtils.isEmpty(uplodData.getFilePath())) { + MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath()+">>>uploadType:"+uplodData.getUploadType()); + uplodData.setState(STATE_UPDING); File file = new File(uplodData.getFilePath()); RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); ProgressRequestBody progressRequestBody = new ProgressRequestBody(requestBody, (bytesWritten, contentLength, done) -> { @@ -318,23 +323,38 @@ }); MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), progressRequestBody); RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "file description"); - Call<BaseResponse> uploadFile = apiService.uploadFile(body, description); + Call<BaseResponse> uploadFile = null; + switch (uplodData.getUploadType()) { + case UplodFileState.IMG_TYPE: + uploadFile = apiService.uploadImgFile(body, description); + break; + case UplodFileState.VIDEO_TYPE: + uploadFile = apiService.uploadVideoFile(body, description); + break; + default: + uploadFile = apiService.uploadImgFile(body, description); + break; + } + uplodData.setThisCall(uploadFile); uploadFile.enqueue(new Callback<BaseResponse>() { @Override public void onResponse(Call<BaseResponse> call, Response<BaseResponse> response) { if (response.body() != null) { if (response.body().isSuccess()) { - uplodData.setState(1); + uplodData.setState(STATE_DONE); uplodData.setPostId(((LinkedTreeMap) response.body().getContent()).get("id").toString()); uplodData.setWebPath(((LinkedTreeMap) response.body().getContent()).get("webPath").toString()); listener.onBack(uplodData); } else { + MyLog.d("progressRequestBody>>>" + response.body().getMsg()); if (uplodData.getNumber() <= uplodFilerepeatSize) { uplodData.setNumber(uplodData.getNumber() + 1); - uplodData.setState(2); + uplodData.setState(STATE_ERROR); uploadFile(context, uplodData, listener, adapter); } else { + uplodData.setState(STATE_ERROR); + uplodData.setNumber(0); listener.onBack(uplodData); } } @@ -343,22 +363,24 @@ @Override public void onFailure(Call<BaseResponse> call, Throwable t) { - MyLog.d("progressRequestBody>>>" + "onFailure:"); - if (uplodData.getNumber() <= uplodFilerepeatSize) { - uplodData.setNumber(uplodData.getNumber() + 1); - uplodData.setState(2); - uploadFile(context, uplodData, listener, adapter); - } else { - listener.onBack(uplodData); + MyLog.d("progressRequestBody>>>" + "onFailure:" + t.getMessage()); + if (!t.getMessage().equals("Canceled")) { + uplodData.setState(STATE_ERROR); + if (uplodData.getNumber() <= uplodFilerepeatSize) { + uplodData.setNumber(uplodData.getNumber() + 1); + uploadFile(context, uplodData, listener, adapter); + } else { + uplodData.setNumber(0); + listener.onBack(uplodData); + } } + } }); } else { - uplodData.setState(UplodFileState.STATE_ERROR); + uplodData.setState(STATE_ERROR); listener.onBack(uplodData); } - - } diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java index 9f34339..1bafe3b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java @@ -41,7 +41,7 @@ Observable<BaseResponse> requestPost(@Url String url, @Body Map<String, Object> params); @GET() - Observable<BaseResponse> requestGet(@Url String url, @QueryMap Map<String, Object> params,@Header("token") String token); + Observable<BaseResponse> requestGet(@Url String url, @QueryMap Map<String, Object> params, @Header("token") String token); @GET() Observable<BaseResponse> requestGet(@Url String url); @@ -58,11 +58,15 @@ Call<BaseResponse> uploadFiles(@PartMap Map<String, RequestBody> map); @Multipart - @POST(Constants.BASE_URL + "/app/webFile/upPhoto") - Call<BaseResponse> uploadFile(@Part MultipartBody.Part file,@Part("description") RequestBody description); + @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upPhoto") + Call<BaseResponse> uploadImgFile(@Part MultipartBody.Part file, @Part("description") RequestBody description); + + @Multipart + @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upVideo") + Call<BaseResponse> uploadVideoFile(@Part MultipartBody.Part file, @Part("description") RequestBody description); //鑾峰彇楠岃瘉鐮� - @GET(Constants.BASE_URL+"/app/captcha/get") + @GET(Constants.BASE_URL + "/app/captcha/get") Observable<CodeResult> getCode(@QueryMap Map<String, Object> params); @GET() diff --git a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java index 1bb800f..9b4d3d1 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java @@ -6,9 +6,10 @@ * Description: */ public class Constants { -// public static final String BASE_URL = "http://192.168.10.52:8088"; -public static final String BASE_URL = "https://no253541tf71.vicp.fun"; -//public static final String BASE_URL = "http://fve2iz.natappfree.cc"; + // public static final String BASE_URL = "http://192.168.10.52:8088"; + public static final String BASE_URL = "https://no253541tf71.vicp.fun"; + //public static final String BASE_URL = "http://fve2iz.natappfree.cc"; + public static final String BASE_UPLOAD_FILE_URL = "https://no253541tf71.vicp.fun"; /** * 浠h〃璇锋眰鎴愬姛 */ diff --git a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java index fada46d..16facdb 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java @@ -1,6 +1,8 @@ package com.dayu.pipirrapp.net; +import com.dayu.pipirrapp.BuildConfig; + import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; @@ -35,9 +37,9 @@ builder.addInterceptor(new MyIntercepterApplication()); //娣诲姞鏃ュ織鎷︽埅鍣� //娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣� -// if (BuildConfig.DEBUG) { + if (BuildConfig.DEBUG) { builder.addInterceptor(loggingInterceptor); -// } + } OkHttpClient client = builder.build(); // // 鍒涘缓GsonBuilder骞惰缃暱鏁村瀷搴忓垪鍖栫瓥鐣ヤ负瀛楃涓� diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java new file mode 100644 index 0000000..5755332 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java @@ -0,0 +1,58 @@ +package com.dayu.pipirrapp.tool; + +import android.content.Context; + +import com.dayu.pipirrapp.adapter.AddPictureAdapter; +import com.dayu.pipirrapp.bean.net.UplodFileState; +import com.dayu.pipirrapp.net.ApiManager; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.upload.UploadFileListener; + +import java.util.Map; + +import retrofit2.Call; + +/** + * FileUploadUtils - + * + * @author zuoxiao + * @version 1.0 + * @since 2025-01-03 + */ +public class FileUploadUtils { + + + /** + * 涓婁紶鍥剧墖鏂囦欢 + * + * @param context + * @param uplodFileState + * @param uplodFileStates + * @param adapter + */ + public static void uploadFile(Context context, UplodFileState uplodFileState, Map<String, UplodFileState> uplodFileStates, AddPictureAdapter adapter) { + ApiManager.getInstance().uploadFile(context, uplodFileState, state -> { + uplodFileStates.replace(state.getFilePath(), state); + adapter.updateProgress(uplodFileState); + }, adapter); + } + + /** + * 褰撳叧闂璦ctivity鏃跺叧闂墍鏈夎姹� + * @param uplodFileStates + */ + public static void cancelAllCall(Map<String, UplodFileState> uplodFileStates){ + try { + for(UplodFileState uplodFileState:uplodFileStates.values()){ + Call<BaseResponse> mCall =uplodFileState.getThisCall(); + if (mCall != null) { + mCall.cancel(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java b/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java index 2a4ae79..4c95f5b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java +++ b/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java @@ -15,21 +15,35 @@ } public static void showToastShort(Context context, String s) { - if (s != null) { - if (!TextUtils.isEmpty(s)) - makeText(context, s, Toast.LENGTH_SHORT).show(); + + if (!TextUtils.isEmpty(s)) { + if (context != null) { + if (!TextUtils.isEmpty(context.getPackageName())) { + makeText(context, s, Toast.LENGTH_SHORT).show(); + } + } } + } public static void showToastLong(Context context, String s) { if (!TextUtils.isEmpty(s)) { - makeText(context, s, Toast.LENGTH_LONG).show(); + if (context != null) { + if (!TextUtils.isEmpty(context.getPackageName())) { + makeText(context, s, Toast.LENGTH_LONG).show(); + } + } } } public static void showToast(Context context, String s) { if (s != null) { - makeText(context, s, Toast.LENGTH_LONG).show(); + if (context != null) { + if (!TextUtils.isEmpty(context.getPackageName())) { + makeText(context, s, Toast.LENGTH_LONG).show(); + } + } + } } diff --git a/app/src/main/res/layout/activity_change_pass_word.xml b/app/src/main/res/layout/activity_change_pass_word.xml index 3387ea3..5045cd7 100644 --- a/app/src/main/res/layout/activity_change_pass_word.xml +++ b/app/src/main/res/layout/activity_change_pass_word.xml @@ -18,8 +18,10 @@ android:layout_marginTop="10dp" android:background="@color/white" android:hint="璇疯緭鍏ユ棫瀵嗙爜" + android:maxLines="1" android:paddingLeft="20dp" - android:paddingRight="20dp" /> + android:paddingRight="20dp" + android:singleLine="true" /> <TextView @@ -38,8 +40,10 @@ android:background="@color/white" android:hint="璇疯緭鍏ユ柊瀵嗙爜" android:inputType="textPassword" + android:maxLines="1" android:paddingLeft="20dp" - android:paddingRight="20dp" /> + android:paddingRight="20dp" + android:singleLine="true" /> <EditText android:id="@+id/newPsTwo" @@ -49,8 +53,10 @@ android:background="@color/white" android:hint="鍐嶆杈撳叆鏂板瘑鐮�" android:inputType="textPassword" + android:maxLines="1" android:paddingLeft="20dp" - android:paddingRight="20dp" /> + android:paddingRight="20dp" + android:singleLine="true" /> <TextView diff --git a/app/src/main/res/layout/item_add_filter_image.xml b/app/src/main/res/layout/item_add_filter_image.xml index 929c680..e69b66b 100644 --- a/app/src/main/res/layout/item_add_filter_image.xml +++ b/app/src/main/res/layout/item_add_filter_image.xml @@ -11,18 +11,7 @@ android:layout_height="match_parent" tools:src="@color/app_color_f6" /> - <ImageView - android:id="@+id/iv_del" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignTop="@id/fiv" - android:layout_alignRight="@id/fiv" - android:paddingLeft="10dp" - android:paddingBottom="10dp" - android:scaleType="centerInside" - android:src="@mipmap/ic_item_delete" - android:visibility="gone" - tools:visibility="visible" /> + <TextView android:id="@+id/tv_duration" @@ -48,6 +37,7 @@ android:id="@+id/mask_layer_bg" android:layout_width="match_parent" android:layout_height="match_parent" + android:visibility="gone" android:background="@color/mask_layer_bg"> <com.king.view.circleprogressview.CircleProgressView @@ -56,6 +46,7 @@ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" + app:cpvLabelTextSize="15sp" app:cpvShowTick="false" app:cpvStrokeWidth="2dp" /> @@ -63,9 +54,20 @@ android:id="@+id/postError" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="40dp" + android:padding="20dp" android:src="@drawable/ic_error_picture" /> </RelativeLayout> - + <ImageView + android:id="@+id/iv_del" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignTop="@id/fiv" + android:layout_alignRight="@id/fiv" + android:paddingLeft="10dp" + android:paddingBottom="10dp" + android:scaleType="centerInside" + android:src="@mipmap/ic_item_delete" + android:visibility="gone" + tools:visibility="visible" /> </com.luck.picture.lib.widget.SquareRelativeLayout> \ No newline at end of file -- Gitblit v1.8.0