Browse Source

闪光灯的问题

詹子聪 5 năm trước cách đây
mục cha
commit
6d63702f73

+ 4 - 0
app/src/main/java/com/miekir/ocr/base/BaseCameraActivity.java

@@ -16,6 +16,10 @@ public abstract class BaseCameraActivity extends BaseMVPActivity {
 
 
     }
     }
 
 
+    protected void takePhotoResult(Bitmap bitmap, String extension) {
+
+    }
+
     protected void setWidthHeight(int width, int height) {
     protected void setWidthHeight(int width, int height) {
 
 
     }
     }

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

@@ -336,6 +336,7 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
         });
         });
     }
     }
 
 
+
     public void startOcrFromBitmap(Context context, Bitmap normalBitmap, int[] rectData, File file, String scene, boolean isScreenLandscape) {
     public void startOcrFromBitmap(Context context, Bitmap normalBitmap, int[] rectData, File file, String scene, boolean isScreenLandscape) {
         getView().showLoading(context.getResources().getString(R.string.loading));
         getView().showLoading(context.getResources().getString(R.string.loading));
         int mLeft = rectData[0];
         int mLeft = rectData[0];

+ 43 - 3
app/src/main/java/com/miekir/ocr/ui/camera/otalia/OtaCameraActivity.java

@@ -1,8 +1,11 @@
 package com.miekir.ocr.ui.camera.otalia;
 package com.miekir.ocr.ui.camera.otalia;
 
 
 import android.graphics.Bitmap;
 import android.graphics.Bitmap;
+import android.graphics.PointF;
+import android.graphics.RectF;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View;
+import android.widget.ImageView;
 
 
 import androidx.annotation.NonNull;
 import androidx.annotation.NonNull;
 
 
@@ -13,6 +16,7 @@ import com.otaliastudios.cameraview.CameraLogger;
 import com.otaliastudios.cameraview.CameraUtils;
 import com.otaliastudios.cameraview.CameraUtils;
 import com.otaliastudios.cameraview.CameraView;
 import com.otaliastudios.cameraview.CameraView;
 import com.otaliastudios.cameraview.PictureResult;
 import com.otaliastudios.cameraview.PictureResult;
+import com.otaliastudios.cameraview.controls.Flash;
 import com.otaliastudios.cameraview.controls.Preview;
 import com.otaliastudios.cameraview.controls.Preview;
 import com.otaliastudios.cameraview.frame.Frame;
 import com.otaliastudios.cameraview.frame.Frame;
 import com.otaliastudios.cameraview.frame.FrameProcessor;
 import com.otaliastudios.cameraview.frame.FrameProcessor;
@@ -26,6 +30,12 @@ import com.otaliastudios.cameraview.frame.FrameProcessor;
  */
  */
 public class OtaCameraActivity extends BaseCameraActivity {
 public class OtaCameraActivity extends BaseCameraActivity {
     private CameraView camera;
     private CameraView camera;
+    private ImageView iv_flash;
+    private boolean mIsFlashOpen = false;
+    protected int mLeft;
+    protected int mTop;
+    protected int mRight;
+    protected int mBottom;
 
 
     @Override
     @Override
     public int getLayoutID() {
     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() {
     public void takePhoto() {
-        if (camera.isTakingPicture()) {
+        if (mIsCapturing || camera.isTakingPicture()) {
             return;
             return;
         }
         }
         if (camera.getPreview() != Preview.GL_SURFACE) {
         if (camera.getPreview() != Preview.GL_SURFACE) {
@@ -64,11 +87,27 @@ public class OtaCameraActivity extends BaseCameraActivity {
             return;
             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 {
     class Listener extends CameraListener {
+        @Override
+        public void onAutoFocusEnd(boolean successful, @NonNull PointF point) {
+            super.onAutoFocusEnd(successful, point);
+            if (mIsCapturing) {
+                mIsCapturing = false;
+                camera.takePictureSnapshot();
+            }
+        }
 
 
         @Override
         @Override
         public void onPictureTaken(@NonNull PictureResult result) {
         public void onPictureTaken(@NonNull PictureResult result) {
@@ -86,6 +125,7 @@ public class OtaCameraActivity extends BaseCameraActivity {
                     return;
                     return;
             }
             }
 
 
+            camera.setFlash(Flash.OFF);
             Bitmap bitmap = CameraUtils.decodeBitmap(result.getData());
             Bitmap bitmap = CameraUtils.decodeBitmap(result.getData());
             takePhotoResult(bitmap);
             takePhotoResult(bitmap);
         }
         }

+ 0 - 18
app/src/main/java/com/miekir/ocr/ui/camera/otalia/OtaOperationActivity.java

@@ -56,10 +56,6 @@ public class OtaOperationActivity extends OtaCameraActivity implements CropView.
     private String mPortraitString;
     private String mPortraitString;
 
 
     protected CropView pcv_scan;
     protected CropView pcv_scan;
-    protected int mLeft;
-    protected int mTop;
-    protected int mRight;
-    protected int mBottom;
 
 
     @Override
     @Override
     public void initViews(Bundle savedInstanceState) {
     public void initViews(Bundle savedInstanceState) {
@@ -71,8 +67,6 @@ public class OtaOperationActivity extends OtaCameraActivity implements CropView.
         // 裁剪View
         // 裁剪View
         pcv_scan = findViewById(R.id.pcv_scan);
         pcv_scan = findViewById(R.id.pcv_scan);
         pcv_scan.setLocationListener(this);
         pcv_scan.setLocationListener(this);
-        //showResultDialog(null);
-        //showLoading("Loading...");
 
 
         mLandscapeString = getResources().getString(R.string.landscape);
         mLandscapeString = getResources().getString(R.string.landscape);
         mPortraitString = getResources().getString(R.string.portrait);
         mPortraitString = getResources().getString(R.string.portrait);
@@ -112,7 +106,6 @@ public class OtaOperationActivity extends OtaCameraActivity implements CropView.
                 } else {
                 } else {
                     tv_orientation.setVisibility(View.INVISIBLE);
                     tv_orientation.setVisibility(View.INVISIBLE);
                 }
                 }
-
                 break;
                 break;
 
 
             case R.id.tv_orientation:
             case R.id.tv_orientation:
@@ -176,21 +169,10 @@ public class OtaOperationActivity extends OtaCameraActivity implements CropView.
     @Override
     @Override
     public void locationRect(int startX, int startY, int endX, int endY) {
     public void locationRect(int startX, int startY, int endX, int endY) {
         // 截取的区域坐标信息
         // 截取的区域坐标信息
-        //System.out.println("x:"+startX + "   y:" + startY + "    endX:" + endX + "   endY" + endY);
-        /*mLeft = startY;
-        mTop = SizeTool.SCREEN_WIDTH - endX;
-        mRight = endY;
-        mBottom = SizeTool.SCREEN_WIDTH - startX;*/
-
         mLeft = startX;
         mLeft = startX;
         mTop = startY;
         mTop = startY;
         mRight = endX;
         mRight = endX;
         mBottom = endY;
         mBottom = endY;
-
-        /*mLeft = startY;
-        mTop = SizeTool.SCREEN_WIDTH - endX;
-        mRight = endY;
-        mBottom = SizeTool.SCREEN_WIDTH - startX;*/
     }
     }
 
 
     @Override
     @Override

+ 1 - 1
app/src/main/res/layout/activity_otalia_camera.xml

@@ -60,7 +60,7 @@
             app:cameraPreview="glSurface"
             app:cameraPreview="glSurface"
             app:cameraPlaySounds="true"
             app:cameraPlaySounds="true"
             app:cameraGrid="off"
             app:cameraGrid="off"
-            app:cameraFlash="auto"
+            app:cameraFlash="off"
             app:cameraAudio="off"
             app:cameraAudio="off"
             app:cameraFacing="back"
             app:cameraFacing="back"
             app:cameraGestureTap="none"
             app:cameraGestureTap="none"