Kaynağa Gözat

还原裁剪目录

詹子聪 5 yıl önce
ebeveyn
işleme
ac653a7efb

+ 110 - 110
app/src/main/java/com/miekir/ocr/ui/OperationPresenter.java

@@ -34,7 +34,7 @@ import io.reactivex.annotations.NonNull;
 import io.reactivex.schedulers.Schedulers;
 import top.zibin.luban.Luban;
 
-import static com.miekir.ocr.ui.camera.otalia.OtaOperationActivity.DIR_PICTURE;
+import static android.os.Environment.DIRECTORY_PICTURES;
 
 /**
  * @author 詹子聪
@@ -85,7 +85,7 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
                     }
 
                     if (multi > 1) {
-                        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DIR_PICTURE  + "/" + System.currentTimeMillis() + ".jpg");
+                        File file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) + "/" + System.currentTimeMillis() + ".jpg");
                         if (!file.getParentFile().exists()) {
                             file.getParentFile().mkdirs();
                         }
@@ -139,43 +139,43 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
                 }
             }
         })
-        /*.filter(base64String -> {
-            // 图片base64不为空才继续,否则直接忽略,没有任何回调会被调用
-            return !TextUtils.isEmpty(base64String);
-        })*/
-        .flatMap(photoBase64 -> {
-            Map<String, Object> requestParams = new HashMap<>();
-            requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
-            requestParams.put("appid", "10233937");
-            requestParams.put("image", photoBase64);
-            Map<String, Object> options = new HashMap<>();
-            options.put("scene", scene);
-            requestParams.put("options", options);
-
-            // 发送识别请求
-            return RetrofitHelper.getInstance()
-                    .getRequestApi(ApiService.class)
-                    .getOcrResult(requestParams);
-        })
-        .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-        .subscribe(new BaseObserver<OcrResult>() {
-            @Override
-            public void onSuccess(OcrResult result) {
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(result);
-                }
-            }
+                /*.filter(base64String -> {
+                    // 图片base64不为空才继续,否则直接忽略,没有任何回调会被调用
+                    return !TextUtils.isEmpty(base64String);
+                })*/
+                .flatMap(photoBase64 -> {
+                    Map<String, Object> requestParams = new HashMap<>();
+                    requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
+                    requestParams.put("appid", "10233937");
+                    requestParams.put("image", photoBase64);
+                    Map<String, Object> options = new HashMap<>();
+                    options.put("scene", scene);
+                    requestParams.put("options", options);
+
+                    // 发送识别请求
+                    return RetrofitHelper.getInstance()
+                            .getRequestApi(ApiService.class)
+                            .getOcrResult(requestParams);
+                })
+                .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<OcrResult>() {
+                    @Override
+                    public void onSuccess(OcrResult result) {
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(result);
+                        }
+                    }
 
-            @Override
-            public void onFailure(Throwable e, String errMsg) {
-                // 装饰器模式
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(null);
-                }
-            }
-        });
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        // 装饰器模式
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(null);
+                        }
+                    }
+                });
     }
 
     public void startOcrFromFile(Context context, byte[] rawPhotoBytes, int[] rectData, File file, String scene, boolean isScreenLandscape) {
@@ -301,43 +301,43 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
                 }
             }
         })
-        /*.filter(base64String -> {
-            // 图片base64不为空才继续,否则直接忽略,没有任何回调会被调用
-            return !TextUtils.isEmpty(base64String);
-        })*/
-        .flatMap(photoBase64 -> {
-            Map<String, Object> requestParams = new HashMap<>();
-            requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
-            requestParams.put("appid", "10233937");
-            requestParams.put("image", photoBase64);
-            Map<String, Object> options = new HashMap<>();
-            options.put("scene", scene);
-            requestParams.put("options", options);
-
-            // 发送识别请求
-            return RetrofitHelper.getInstance()
-                    .getRequestApi(ApiService.class)
-                    .getOcrResult(requestParams);
-        })
-        .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-        .subscribe(new BaseObserver<OcrResult>() {
-            @Override
-            public void onSuccess(OcrResult result) {
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(result);
-                }
-            }
+                /*.filter(base64String -> {
+                    // 图片base64不为空才继续,否则直接忽略,没有任何回调会被调用
+                    return !TextUtils.isEmpty(base64String);
+                })*/
+                .flatMap(photoBase64 -> {
+                    Map<String, Object> requestParams = new HashMap<>();
+                    requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
+                    requestParams.put("appid", "10233937");
+                    requestParams.put("image", photoBase64);
+                    Map<String, Object> options = new HashMap<>();
+                    options.put("scene", scene);
+                    requestParams.put("options", options);
+
+                    // 发送识别请求
+                    return RetrofitHelper.getInstance()
+                            .getRequestApi(ApiService.class)
+                            .getOcrResult(requestParams);
+                })
+                .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<OcrResult>() {
+                    @Override
+                    public void onSuccess(OcrResult result) {
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(result);
+                        }
+                    }
 
-            @Override
-            public void onFailure(Throwable e, String errMsg) {
-                // 装饰器模式
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(null);
-                }
-            }
-        });
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        // 装饰器模式
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(null);
+                        }
+                    }
+                });
     }
 
 
@@ -428,44 +428,44 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
                 }
             }
         })
-        .flatMap(photoBase64 -> {
-            Map<String, Object> requestParams = new HashMap<>();
-            requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
-            requestParams.put("appid", "10233937");
-            requestParams.put("image", photoBase64);
-            Map<String, Object> options = new HashMap<>();
-            options.put("scene", scene);
-            requestParams.put("options", options);
-
-            // 发送识别请求
-            return RetrofitHelper.getInstance()
-                    .getRequestApi(ApiService.class)
-                    .getOcrResult(requestParams);
-        })
-        .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-        .subscribe(new BaseObserver<OcrResult>() {
-            @Override
-            public void onSuccess(OcrResult result) {
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(result);
-                }
-            }
+                .flatMap(photoBase64 -> {
+                    Map<String, Object> requestParams = new HashMap<>();
+                    requestParams.put("request_id", "035992000119071904311742_" + DateTool.getRequestId());
+                    requestParams.put("appid", "10233937");
+                    requestParams.put("image", photoBase64);
+                    Map<String, Object> options = new HashMap<>();
+                    options.put("scene", scene);
+                    requestParams.put("options", options);
+
+                    // 发送识别请求
+                    return RetrofitHelper.getInstance()
+                            .getRequestApi(ApiService.class)
+                            .getOcrResult(requestParams);
+                })
+                .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<OcrResult>() {
+                    @Override
+                    public void onSuccess(OcrResult result) {
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(result);
+                        }
+                    }
 
-            @Override
-            public void onFailure(Throwable e, String errMsg) {
-                // 装饰器模式
-                if (getView() != null) {
-                    getView().dismissLoading();
-                    getView().onOcrResult(null);
-                }
-            }
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        // 装饰器模式
+                        if (getView() != null) {
+                            getView().dismissLoading();
+                            getView().onOcrResult(null);
+                        }
+                    }
 
-            @Override
-            public void onError(@NonNull Throwable e) {
-                super.onError(e);
-            }
-        });
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        super.onError(e);
+                    }
+                });
     }
 
     private int mWidth = SizeTool.SCREEN_WIDTH;

+ 3 - 5
app/src/main/java/com/miekir/ocr/ui/camera/otalia/OtaOperationActivity.java

@@ -32,6 +32,8 @@ import com.zhihu.matisse.MimeType;
 import java.io.File;
 import java.util.List;
 
+import static android.os.Environment.DIRECTORY_PICTURES;
+
 /**
  * Copyright (C), 2019-2020, Genlot
  *
@@ -41,7 +43,6 @@ import java.util.List;
  */
 public class OtaOperationActivity extends OtaCameraActivity implements CropView.OnRectChangeListener, View.OnClickListener, IOperationView {
     private static final int REQUEST_CODE_CHOOSE = 6;
-    public static final String DIR_PICTURE = "ocr_pictures";
 
     @InjectPresenter
     OperationPresenter mOperationPresenter;
@@ -302,10 +303,7 @@ public class OtaOperationActivity extends OtaCameraActivity implements CropView.
         }
         // 得到裁剪后的图片数据
         int[] rectData = new int[]{mLeft, mTop, mRight, mBottom};
-        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DIR_PICTURE + "/" + System.currentTimeMillis() + ".jpg");
-        if (!file.getParentFile().exists()) {
-            file.getParentFile().mkdirs();
-        }
+        File file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) + "/" + System.currentTimeMillis() + ".jpg");
         if (tv_orientation.getVisibility() == View.VISIBLE) {
             mOperationPresenter.startOcrFromBitmap(this, bitmap, rectData, file, mCurrentScene, pcv_scan.isLandscape());
         } else {