Skip to content

Commit ecfc277

Browse files
committed
fixed: crashed when user click on screen after finishing capturing
1 parent 4c468c2 commit ecfc277

File tree

2 files changed

+40
-19
lines changed

2 files changed

+40
-19
lines changed

documentscanner/src/main/java/com/haotran/documentscanner/activity/ScanActivity.java

+18-17
Original file line numberDiff line numberDiff line change
@@ -142,23 +142,24 @@ private void initCamera() {
142142
mImageSurfaceView = new ScanSurfaceView(ScanActivity.this, ScanActivity.this);
143143
cameraPreviewLayout.addView(mImageSurfaceView);
144144

145-
mImageSurfaceView.setOnTouchListener(new View.OnTouchListener() {
146-
@Override
147-
public boolean onTouch(View view, MotionEvent motionEvent) {
148-
// Toast.makeText(getApplicationContext(), "mImageSurfaceView", Toast.LENGTH_LONG).show();
149-
return false;
150-
}
151-
});
152-
153-
cameraPreviewLayout.setOnTouchListener(new View.OnTouchListener() {
154-
@Override
155-
public boolean onTouch(View view, MotionEvent motionEvent) {
156-
// Toast.makeText(getApplicationContext(), "cameraPrevieLayout", Toast.LENGTH_LONG).show();
157-
return mImageSurfaceView.cameraFocus(motionEvent);
158-
// return true;
159-
160-
}
161-
});
145+
// mImageSurfaceView.setOnTouchListener(new View.OnTouchListener() {
146+
// @Override
147+
// public boolean onTouch(View view, MotionEvent motionEvent) {
148+
//// Toast.makeText(getApplicationContext(), "mImageSurfaceView", Toast.LENGTH_LONG).show();
149+
// return false;
150+
// }
151+
// });
152+
//
153+
// cameraPreviewLayout.setOnTouchListener(new View.OnTouchListener() {
154+
// @Override
155+
// public boolean onTouch(View view, MotionEvent motionEvent) {
156+
//// Toast.makeText(getApplicationContext(), "cameraPrevieLayout", Toast.LENGTH_LONG).show();
157+
//
158+
// return mImageSurfaceView.cameraFocus(motionEvent);
159+
//// return true;
160+
//
161+
// }
162+
// });
162163
}
163164

164165
@Override

documentscanner/src/main/java/com/haotran/documentscanner/view/ScanSurfaceView.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.haotran.documentscanner.view;
22

3+
import android.annotation.SuppressLint;
34
import android.app.Activity;
45
import android.content.Context;
56
import android.graphics.Bitmap;
@@ -19,6 +20,7 @@
1920
import android.view.MotionEvent;
2021
import android.view.SurfaceHolder;
2122
import android.view.SurfaceView;
23+
import android.view.View;
2224
import android.widget.FrameLayout;
2325

2426
import com.haotran.documentscanner.constants.ScanConstants;
@@ -63,6 +65,7 @@ public class ScanSurfaceView extends FrameLayout implements SurfaceHolder.Callba
6365
private Camera.Size previewSize;
6466
private boolean isCapturing = false;
6567

68+
@SuppressLint("ClickableViewAccessibility")
6669
public ScanSurfaceView(Context context, IScanner iScanner) {
6770
super(context);
6871
mSurfaceView = new SurfaceView(context);
@@ -73,6 +76,14 @@ public ScanSurfaceView(Context context, IScanner iScanner) {
7376
SurfaceHolder surfaceHolder = mSurfaceView.getHolder();
7477
surfaceHolder.addCallback(this);
7578
this.iScanner = iScanner;
79+
80+
mSurfaceView.setOnTouchListener(new OnTouchListener() {
81+
@Override
82+
public boolean onTouch(View view, MotionEvent motionEvent) {
83+
cameraFocus(motionEvent);
84+
return true;
85+
}
86+
});
7687
}
7788

7889
@Override
@@ -259,7 +270,7 @@ public void onPreviewFrame(byte[] data, Camera camera) {
259270

260271
// Imgcodecs.imwrite("Gaussian45.jpg", destination);
261272

262-
SaveImage(mat);
273+
// SaveImage(mat);
263274

264275
yuv.release();
265276

@@ -441,6 +452,7 @@ public void onFinish() {
441452
autoCaptureTimer.start();
442453
}
443454

455+
@SuppressLint("ClickableViewAccessibility")
444456
private void autoCapture(ScanHint scanHint) {
445457
if (isCapturing) return;
446458
if (ScanHint.CAPTURING_IMAGE.equals(scanHint)) {
@@ -450,8 +462,16 @@ private void autoCapture(ScanHint scanHint) {
450462

451463
camera.takePicture(mShutterCallBack, null, pictureCallback);
452464
camera.setPreviewCallback(null);
465+
453466
// iScanner.displayHint(ScanHint.NO_MESSAGE);
454467
// clearAndInvalidateCanvas();
468+
mSurfaceView.setOnTouchListener(new OnTouchListener() {
469+
@Override
470+
public boolean onTouch(View view, MotionEvent motionEvent) {
471+
//do nothing...
472+
return true;
473+
}
474+
});
455475
} catch (Exception e) {
456476
e.printStackTrace();
457477
}
@@ -625,7 +645,7 @@ public boolean cameraFocus(MotionEvent event) {
625645
Rect focusRect = calculateTapArea(event.getX(), event.getY(), 1f);
626646

627647
Camera.Parameters parameters = camera.getParameters();
628-
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO);
648+
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
629649

630650
if (parameters.getMaxNumFocusAreas() > 0) {
631651
List<Camera.Area> mylist = new ArrayList<Camera.Area>();

0 commit comments

Comments
 (0)