|
|
@@ -1,8 +1,11 @@
|
|
|
package com.miekir.ocr.ui.camera.otalia;
|
|
|
|
|
|
import android.graphics.Bitmap;
|
|
|
+import android.graphics.PointF;
|
|
|
+import android.graphics.RectF;
|
|
|
import android.os.Bundle;
|
|
|
import android.view.View;
|
|
|
+import android.widget.ImageView;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
|
@@ -13,6 +16,7 @@ import com.otaliastudios.cameraview.CameraLogger;
|
|
|
import com.otaliastudios.cameraview.CameraUtils;
|
|
|
import com.otaliastudios.cameraview.CameraView;
|
|
|
import com.otaliastudios.cameraview.PictureResult;
|
|
|
+import com.otaliastudios.cameraview.controls.Flash;
|
|
|
import com.otaliastudios.cameraview.controls.Preview;
|
|
|
import com.otaliastudios.cameraview.frame.Frame;
|
|
|
import com.otaliastudios.cameraview.frame.FrameProcessor;
|
|
|
@@ -26,6 +30,12 @@ import com.otaliastudios.cameraview.frame.FrameProcessor;
|
|
|
*/
|
|
|
public class OtaCameraActivity extends BaseCameraActivity {
|
|
|
private CameraView camera;
|
|
|
+ private ImageView iv_flash;
|
|
|
+ private boolean mIsFlashOpen = false;
|
|
|
+ protected int mLeft;
|
|
|
+ protected int mTop;
|
|
|
+ protected int mRight;
|
|
|
+ protected int mBottom;
|
|
|
|
|
|
@Override
|
|
|
public int getLayoutID() {
|
|
|
@@ -53,10 +63,23 @@ public class OtaCameraActivity extends BaseCameraActivity {
|
|
|
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ iv_flash = findViewById(R.id.iv_flash);
|
|
|
+ iv_flash.setOnClickListener(v -> {
|
|
|
+ mIsFlashOpen = !mIsFlashOpen;
|
|
|
+ if (mIsFlashOpen) {
|
|
|
+ iv_flash.setImageResource(R.mipmap.flash_open);
|
|
|
+ camera.setFlash(Flash.ON);
|
|
|
+ } else {
|
|
|
+ iv_flash.setImageResource(R.mipmap.flash_close);
|
|
|
+ camera.setFlash(Flash.OFF);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
+ private boolean mIsCapturing = false;
|
|
|
public void takePhoto() {
|
|
|
- if (camera.isTakingPicture()) {
|
|
|
+ if (mIsCapturing || camera.isTakingPicture()) {
|
|
|
return;
|
|
|
}
|
|
|
if (camera.getPreview() != Preview.GL_SURFACE) {
|
|
|
@@ -64,11 +87,27 @@ public class OtaCameraActivity extends BaseCameraActivity {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 开始拍照
|
|
|
- camera.takePictureSnapshot();
|
|
|
+ mIsCapturing = true;
|
|
|
+
|
|
|
+ //camera.takePicture();
|
|
|
+ // 开始拍照,takePictureSnapshot不会触发闪光灯
|
|
|
+ if (mIsFlashOpen) {
|
|
|
+ camera.setFlash(Flash.TORCH);
|
|
|
+ camera.startAutoFocus(new RectF(mLeft, mTop, mRight, mBottom));
|
|
|
+ } else {
|
|
|
+ camera.takePictureSnapshot();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
class Listener extends CameraListener {
|
|
|
+ @Override
|
|
|
+ public void onAutoFocusEnd(boolean successful, @NonNull PointF point) {
|
|
|
+ super.onAutoFocusEnd(successful, point);
|
|
|
+ if (mIsCapturing) {
|
|
|
+ mIsCapturing = false;
|
|
|
+ camera.takePictureSnapshot();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void onPictureTaken(@NonNull PictureResult result) {
|
|
|
@@ -86,6 +125,7 @@ public class OtaCameraActivity extends BaseCameraActivity {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ camera.setFlash(Flash.OFF);
|
|
|
Bitmap bitmap = CameraUtils.decodeBitmap(result.getData());
|
|
|
takePhotoResult(bitmap);
|
|
|
}
|