forked from finally-vince/ZXingMini
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
YOOJIA.CHEN
committed
Sep 27, 2016
1 parent
d9c9f88
commit 0e91e93
Showing
10 changed files
with
363 additions
and
116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 0 additions & 19 deletions
19
qrcode/src/main/java/com/github/yoojia/qrcode/camera/BitmapCallback.java
This file was deleted.
Oops, something went wrong.
115 changes: 115 additions & 0 deletions
115
qrcode/src/main/java/com/github/yoojia/qrcode/camera/CameraPreviewView.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
package com.github.yoojia.qrcode.camera; | ||
|
||
import android.content.Context; | ||
import android.hardware.Camera; | ||
import android.util.AttributeSet; | ||
import android.util.Log; | ||
import android.view.SurfaceHolder; | ||
import android.view.SurfaceView; | ||
|
||
import java.io.IOException; | ||
|
||
/** | ||
* @author Yoojia Chen (yoojiachen@gmail.com) | ||
* @since 2.0 | ||
*/ | ||
public class CameraPreviewView extends SurfaceView implements SurfaceHolder.Callback { | ||
|
||
private final static String TAG = CameraPreviewView.class.getSimpleName(); | ||
|
||
private Camera mCamera; | ||
private SurfaceHolder mSurfaceHolder; | ||
private PreviewReadyCallback mPreviewReadyCallback; | ||
|
||
public CameraPreviewView(Context context) { | ||
super(context); | ||
init(); | ||
} | ||
|
||
public CameraPreviewView(Context context, AttributeSet attrs) { | ||
super(context, attrs); | ||
init(); | ||
} | ||
|
||
public CameraPreviewView(Context context, AttributeSet attrs, int defStyleAttr) { | ||
super(context, attrs, defStyleAttr); | ||
init(); | ||
} | ||
|
||
private void init(){ | ||
mSurfaceHolder = this.getHolder(); | ||
mSurfaceHolder.addCallback(this); | ||
} | ||
|
||
@Override | ||
public void surfaceCreated(SurfaceHolder holder) { | ||
Log.d(TAG, "Start preview display[SURFACE-CREATED]"); | ||
startPreviewDisplay(holder); | ||
} | ||
|
||
@Override | ||
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { | ||
if (mSurfaceHolder.getSurface() == null){ | ||
return; | ||
} | ||
Cameras.followScreenOrientation(getContext(), mCamera); | ||
Log.d(TAG, "Restart preview display[SURFACE-CHANGED]"); | ||
stopPreviewDisplay(); | ||
startPreviewDisplay(mSurfaceHolder); | ||
} | ||
|
||
public void setCamera(Camera camera) { | ||
mCamera = camera; | ||
final Camera.Parameters params = mCamera.getParameters(); | ||
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); | ||
params.setSceneMode(Camera.Parameters.SCENE_MODE_BARCODE); | ||
} | ||
|
||
public void setPreviewReadyCallback(PreviewReadyCallback previewCallback) { | ||
mPreviewReadyCallback = previewCallback; | ||
} | ||
|
||
private void startPreviewDisplay(SurfaceHolder holder){ | ||
checkCamera(); | ||
try { | ||
mCamera.setPreviewDisplay(holder); | ||
mCamera.startPreview(); | ||
} catch (IOException e) { | ||
Log.e(TAG, "Error while START preview for camera", e); | ||
} | ||
if (mPreviewReadyCallback != null) { | ||
mPreviewReadyCallback.onStarted(mCamera); | ||
} | ||
} | ||
|
||
private void stopPreviewDisplay(){ | ||
checkCamera(); | ||
try { | ||
mCamera.stopPreview(); | ||
} catch (Exception e){ | ||
Log.e(TAG, "Error while STOP preview for camera", e); | ||
} | ||
if (mPreviewReadyCallback != null) { | ||
mPreviewReadyCallback.onStopped(); | ||
} | ||
} | ||
|
||
private void checkCamera(){ | ||
if(mCamera == null) { | ||
throw new IllegalStateException("Camera must be set when start/stop preview, call <setCamera(Camera)> to set"); | ||
} | ||
} | ||
|
||
@Override | ||
public void surfaceDestroyed(SurfaceHolder holder) { | ||
Log.d(TAG, "Stop preview display[SURFACE-DESTROYED]"); | ||
stopPreviewDisplay(); | ||
} | ||
|
||
public interface PreviewReadyCallback { | ||
|
||
void onStarted(Camera camera); | ||
|
||
void onStopped(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
qrcode/src/main/java/com/github/yoojia/qrcode/camera/CaptureCallback.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package com.github.yoojia.qrcode.camera; | ||
|
||
import android.graphics.Bitmap; | ||
import android.graphics.BitmapFactory; | ||
import android.hardware.Camera; | ||
|
||
/** | ||
* @author Yoojia Chen (yoojiachen@gmail.com) | ||
* @since 2.0 | ||
*/ | ||
public interface CaptureCallback { | ||
|
||
void onCaptured(Bitmap bitmap); | ||
} |
50 changes: 50 additions & 0 deletions
50
qrcode/src/main/java/com/github/yoojia/qrcode/camera/DelayedFocusLooper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package com.github.yoojia.qrcode.camera; | ||
|
||
import android.os.Handler; | ||
import android.os.Message; | ||
import android.util.Log; | ||
|
||
/** | ||
* @author Yoojia Chen (yoojiachen@gmail.com) | ||
* @since 2.0 | ||
*/ | ||
public abstract class DelayedFocusLooper { | ||
|
||
public static final String TAG = DelayedFocusLooper.class.getSimpleName(); | ||
|
||
private static final int MSG_FOCUS = 999; | ||
|
||
private boolean mAllowNextFocus = false; | ||
|
||
private final Handler mDelayedHandler = new Handler(new Handler.Callback() { | ||
@Override public boolean handleMessage(Message msg) { | ||
Log.i(TAG, "-> Call auto focus"); | ||
callAutoFocus(); | ||
if (mAllowNextFocus) { | ||
sendNextAutoFocus(mPeriod); | ||
} | ||
return true; | ||
} | ||
}); | ||
|
||
private int mPeriod = 1000; | ||
|
||
public void start(int period) { | ||
mAllowNextFocus = true; | ||
mPeriod = period; | ||
Log.i(TAG, "-> Start auto focus with period: " + period); | ||
sendNextAutoFocus(period); | ||
} | ||
|
||
public void stop(){ | ||
Log.i(TAG, "-> Stop auto focus"); | ||
mAllowNextFocus = false; | ||
mDelayedHandler.removeMessages(MSG_FOCUS); | ||
} | ||
|
||
private void sendNextAutoFocus(int period){ | ||
mDelayedHandler.sendEmptyMessageDelayed(MSG_FOCUS, period); | ||
} | ||
|
||
public abstract void callAutoFocus(); | ||
} |
Oops, something went wrong.