|
|
@@ -5,6 +5,7 @@ import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
import android.content.res.Configuration;
|
|
|
+import android.graphics.Bitmap;
|
|
|
import android.graphics.ImageFormat;
|
|
|
import android.graphics.Point;
|
|
|
import android.graphics.SurfaceTexture;
|
|
|
@@ -19,6 +20,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.Bundle;
|
|
|
import android.os.Environment;
|
|
|
import android.os.Handler;
|
|
|
@@ -30,22 +32,19 @@ import android.util.SparseIntArray;
|
|
|
import android.view.Surface;
|
|
|
import android.view.TextureView;
|
|
|
import android.view.View;
|
|
|
-import android.view.ViewGroup;
|
|
|
-import android.widget.Button;
|
|
|
-import android.widget.FrameLayout;
|
|
|
-import android.widget.ImageView;
|
|
|
+import android.view.ViewTreeObserver;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
|
|
import com.miekir.ocr.base.BaseCameraActivity;
|
|
|
-import com.miekir.ocr.tool.Utils;
|
|
|
+import com.miekir.ocr.tool.CameraPreviewTool;
|
|
|
import com.miekir.ocr.view.AutoFitTextureView;
|
|
|
import com.miekir.ocr.view.GlideV4ImageEngine;
|
|
|
+import com.miekir.ocr.view.cropper.CropImageView;
|
|
|
import com.zhihu.matisse.Matisse;
|
|
|
import com.zhihu.matisse.MimeType;
|
|
|
-import com.zhihu.matisse.engine.impl.GlideEngine;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileNotFoundException;
|
|
|
@@ -97,6 +96,8 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
private static final int MAX_PREVIEW_HEIGHT = 1080;
|
|
|
private int mSensorOrientation;
|
|
|
|
|
|
+ private CropImageView civ_crop;
|
|
|
+
|
|
|
private TextureView.SurfaceTextureListener textureListener = new TextureView.SurfaceTextureListener() {
|
|
|
@Override
|
|
|
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
|
|
|
@@ -106,7 +107,7 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
@Override
|
|
|
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
|
|
|
if (null != textureView || null == imageDimension) {
|
|
|
- textureView.setTransform(Utils.configureTransform(width, height, imageDimension, CameraActivity.this));
|
|
|
+ textureView.setTransform(CameraPreviewTool.configureTransform(width, height, imageDimension, CameraActivity.this));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -157,6 +158,19 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
textureView = findViewById(R.id.textureView);
|
|
|
textureView.setSurfaceTextureListener(textureListener);
|
|
|
|
|
|
+ civ_crop = findViewById(R.id.civ_crop);
|
|
|
+ civ_crop.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
|
|
+ @Override
|
|
|
+ public void onGlobalLayout() {
|
|
|
+ civ_crop.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
|
|
+ //自定义裁剪-全屏的裁剪
|
|
|
+ Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
|
|
|
+ Bitmap bitmap = Bitmap.createBitmap(civ_crop.getWidth(), civ_crop.getHeight(), conf);
|
|
|
+ civ_crop.setImageBitmap(bitmap);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
findViewById(R.id.fl_take).setOnClickListener(this);
|
|
|
findViewById(R.id.iv_album).setOnClickListener(this);
|
|
|
}
|
|
|
@@ -177,7 +191,7 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
|
|
|
Size largest = Collections.max(
|
|
|
Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)),
|
|
|
- new Utils.CompareSizesByArea());
|
|
|
+ new CameraPreviewTool.CompareSizesByArea());
|
|
|
|
|
|
|
|
|
int displayRotation = getWindowManager().getDefaultDisplay().getRotation();
|
|
|
@@ -223,7 +237,7 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
maxPreviewHeight = MAX_PREVIEW_HEIGHT;
|
|
|
}
|
|
|
|
|
|
- imageDimension = Utils.chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class),
|
|
|
+ imageDimension = CameraPreviewTool.chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class),
|
|
|
rotatedPreviewWidth, rotatedPreviewHeight, maxPreviewWidth,
|
|
|
maxPreviewHeight, largest);
|
|
|
|
|
|
@@ -237,7 +251,7 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
}
|
|
|
|
|
|
if (null != textureView || null == imageDimension) {
|
|
|
- textureView.setTransform(Utils.configureTransform(width, height, imageDimension, CameraActivity.this));
|
|
|
+ textureView.setTransform(CameraPreviewTool.configureTransform(width, height, imageDimension, CameraActivity.this));
|
|
|
}
|
|
|
|
|
|
mCameraManager.openCamera(cameraId, stateCallback, null);
|
|
|
@@ -500,11 +514,12 @@ public class CameraActivity extends BaseCameraActivity implements View.OnClickLi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ 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);
|
|
|
}
|
|
|
}
|
|
|
}
|