最近工作中需要開發帶有二維碼掃描功能的軟件(基於開源項目ZXing),遇到的問題記錄一下,也希望給大家帶來幫助。
1.首先因為掃描要開攝像機所以加權限是一定的,不然后面什么都不能進行
<uses-permission android:name="android.permission.CAMERA" />
2.設置掃描框的大小:
在com.zxing.camera包中查找
private static final int MIN_FRAME_WIDTH = 240;
private static final int MIN_FRAME_HEIGHT = 240;
private static final int MAX_FRAME_WIDTH = 580;
private static final int MAX_FRAME_HEIGHT = 580;
修改這幾個屬性值就可以修改掃描框大小。
3.實現二維碼的重復掃描
1.在com.zxing.decoding包中查找restartPreviewAndDecode()方法,本身是private改為public
2.在掃描二維碼的activity中添加重復掃描方法:
private void continuePreview() {
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
initCamera(surfaceHolder);
if (handler != null) {
handler.restartPreviewAndDecode();
}
注:有時候直接調用此方法會出現bug:多次掃描過后返回到上一個界面再次進入的時候會出現黑屏。
解決方法:不直接調用continuePreview()這個方法,在需要二次掃描的時候直接寫:
if (handler != null) {
handler.restartPreviewAndDecode();
}