|
|
@@ -1,9 +1,9 @@
|
|
|
package com.miekir.ocr.ui;
|
|
|
|
|
|
+import android.Manifest;
|
|
|
import android.annotation.SuppressLint;
|
|
|
import android.content.Context;
|
|
|
-import android.content.Intent;
|
|
|
-import android.content.pm.ActivityInfo;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
import android.content.res.Configuration;
|
|
|
import android.graphics.ImageFormat;
|
|
|
import android.graphics.Point;
|
|
|
@@ -19,7 +19,7 @@ import android.hardware.camera2.TotalCaptureResult;
|
|
|
import android.hardware.camera2.params.StreamConfigurationMap;
|
|
|
import android.media.Image;
|
|
|
import android.media.ImageReader;
|
|
|
-import android.net.Uri;
|
|
|
+import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.Environment;
|
|
|
import android.os.Handler;
|
|
|
@@ -30,22 +30,14 @@ import android.util.Size;
|
|
|
import android.util.SparseIntArray;
|
|
|
import android.view.Surface;
|
|
|
import android.view.TextureView;
|
|
|
-import android.view.View;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
-import androidx.annotation.Nullable;
|
|
|
|
|
|
-import com.miekir.common.utils.ViewTool;
|
|
|
import com.miekir.ocr.R;
|
|
|
import com.miekir.ocr.base.BaseCameraActivity;
|
|
|
import com.miekir.ocr.tool.CameraPreviewTool;
|
|
|
import com.miekir.ocr.view.AutoFitTextureView;
|
|
|
-import com.miekir.ocr.view.CropView;
|
|
|
-import com.miekir.ocr.view.GlideV4ImageEngine;
|
|
|
-import com.miekir.ocr.view.IndicatorText;
|
|
|
-import com.zhihu.matisse.Matisse;
|
|
|
-import com.zhihu.matisse.MimeType;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileNotFoundException;
|
|
|
@@ -62,8 +54,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import static android.os.Environment.DIRECTORY_PICTURES;
|
|
|
|
|
|
-public class CameraActivity extends BaseCameraActivity implements View.OnClickListener, CropView.onLocationListener {
|
|
|
- private static final int REQUEST_CODE_CHOOSE = 6;
|
|
|
+public class CameraActivity extends BaseCameraActivity {
|
|
|
private CameraManager mCameraManager;
|
|
|
|
|
|
private static SparseIntArray ORIENTATIONS = new SparseIntArray();
|
|
|
@@ -95,13 +86,7 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
private static final int MAX_PREVIEW_HEIGHT = 1080;
|
|
|
private int mSensorOrientation;
|
|
|
|
|
|
- /**识别不同的内容*/
|
|
|
- private IndicatorText it_email;
|
|
|
- private IndicatorText it_address;
|
|
|
- private IndicatorText it_name;
|
|
|
- private IndicatorText it_all;
|
|
|
- private CropView pcv_scan;
|
|
|
- private int mLastType = CropView.SCAN_TYPE_EMAIL;
|
|
|
+
|
|
|
|
|
|
private TextureView.SurfaceTextureListener textureListener = new TextureView.SurfaceTextureListener() {
|
|
|
@Override
|
|
|
@@ -163,18 +148,6 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
public void initViews(Bundle savedInstanceState) {
|
|
|
textureView = findViewById(R.id.textureView);
|
|
|
textureView.setSurfaceTextureListener(textureListener);
|
|
|
-
|
|
|
- it_email = findViewById(R.id.it_email);
|
|
|
- it_address = findViewById(R.id.it_address);
|
|
|
- it_name = findViewById(R.id.it_name);
|
|
|
- it_all = findViewById(R.id.it_all);
|
|
|
-
|
|
|
- ViewTool.setOnClickListener(this, new int[]{R.id.fl_take, R.id.fl_album,
|
|
|
- it_email.getId(), it_address.getId(), it_name.getId(), it_all.getId()}, this);
|
|
|
-
|
|
|
- // 裁剪View
|
|
|
- pcv_scan = findViewById(R.id.pcv_scan);
|
|
|
- pcv_scan.setLocationListener(this);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -256,10 +229,12 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
textureView.setTransform(CameraPreviewTool.configureTransform(width, height, imageDimension, CameraActivity.this));
|
|
|
}
|
|
|
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
|
|
|
+ checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
mCameraManager.openCamera(cameraId, stateCallback, null);
|
|
|
- } catch (CameraAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } catch (InterruptedException e) {
|
|
|
+ } catch (CameraAccessException | InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
Log.e("tag", "openCamera X");
|
|
|
@@ -491,86 +466,9 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- @Override
|
|
|
- public void onClick(View v) {
|
|
|
- switch (v.getId()) {
|
|
|
- case R.id.fl_take:
|
|
|
- takePicture();
|
|
|
- break;
|
|
|
- case R.id.fl_album:
|
|
|
- Matisse.from(this)
|
|
|
- .choose(MimeType.ofImage())
|
|
|
- .countable(true)
|
|
|
- .maxSelectable(1)
|
|
|
- //.addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
|
|
|
- //.gridExpectedSize(getResources().getDimensionPixelSize(R.dimen.grid_expected_size))
|
|
|
- .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
|
|
|
- .thumbnailScale(0.85f)
|
|
|
- //.imageEngine(new GlideEngine())
|
|
|
- .imageEngine(new GlideV4ImageEngine())
|
|
|
- //.showPreview(false) // Default is `true`
|
|
|
- .forResult(REQUEST_CODE_CHOOSE);
|
|
|
- break;
|
|
|
-
|
|
|
- case R.id.it_email:
|
|
|
- it_email.onIndicatorClicked();
|
|
|
- it_address.onIndicatorRelease();
|
|
|
- it_name.onIndicatorRelease();
|
|
|
- it_all.onIndicatorRelease();
|
|
|
- if (mLastType != CropView.SCAN_TYPE_EMAIL) {
|
|
|
- mLastType = CropView.SCAN_TYPE_EMAIL;
|
|
|
- pcv_scan.setScanArea(mLastType);
|
|
|
- }
|
|
|
- break;
|
|
|
- case R.id.it_address:
|
|
|
- it_email.onIndicatorRelease();
|
|
|
- it_address.onIndicatorClicked();
|
|
|
- it_name.onIndicatorRelease();
|
|
|
- it_all.onIndicatorRelease();
|
|
|
- if (mLastType != CropView.SCAN_TYPE_ADDRESS_NAME) {
|
|
|
- mLastType = CropView.SCAN_TYPE_ADDRESS_NAME;
|
|
|
- pcv_scan.setScanArea(mLastType);
|
|
|
- }
|
|
|
- break;
|
|
|
- case R.id.it_name:
|
|
|
- it_email.onIndicatorRelease();
|
|
|
- it_address.onIndicatorRelease();
|
|
|
- it_name.onIndicatorClicked();
|
|
|
- it_all.onIndicatorRelease();
|
|
|
- it_all.onIndicatorRelease();
|
|
|
- if (mLastType != CropView.SCAN_TYPE_ADDRESS_NAME) {
|
|
|
- mLastType = CropView.SCAN_TYPE_ADDRESS_NAME;
|
|
|
- pcv_scan.setScanArea(mLastType);
|
|
|
- }
|
|
|
- break;
|
|
|
- case R.id.it_all:
|
|
|
-
|
|
|
- it_email.onIndicatorRelease();
|
|
|
- it_address.onIndicatorRelease();
|
|
|
- it_name.onIndicatorRelease();
|
|
|
- it_all.onIndicatorClicked();
|
|
|
- if (mLastType != CropView.SCAN_TYPE_ALL) {
|
|
|
- mLastType = CropView.SCAN_TYPE_ALL;
|
|
|
- pcv_scan.setScanArea(mLastType);
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- private List<Uri> mSelected;
|
|
|
|
|
|
- @Override
|
|
|
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
|
|
- super.onActivityResult(requestCode, resultCode, data);
|
|
|
- if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_CHOOSE) {
|
|
|
- mSelected = Matisse.obtainResult(data);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void locationRect(int startX, int startY, int endX, int endY) {
|
|
|
- // 截取的区域坐标信息
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
}
|