修改zxing连续扫描条码和二维码的怪问题

本来,很简单的事,将CaptureActivity.java中的handleDecode方法中末尾的代码加上

SurfaceView surfaceView = (SurfaceView)findViewById(R.id.preview_view);;

SurfaceHolder surfaceHolder = surfaceView.getHolder();

initCamera(surfaceHolder);

if (handler != null)

handler.restartPreviewAndDecode();

 

即可。但在却没有效果,加断点,却不执行这几句。

折腾几下,后来,只得用上重启大法。

将手机上的此app卸载掉,eclipse也重启一下。

然后就一切正常了。

记录在此,希望对有遇到类似情况的朋友,可以起到一点帮助作用。

 

另外,一个奇怪的问题,就是在加断点调试时,可以连续扫描第二条、第三条等。但不加断点,或是拔掉USB线后,就只能扫描第一条。

后来解决了,原来是zxing为了避免死循环,连续不停的扫描的问题。虽然我前面加了判断每次扫描的内容不一样,才处理。

解决办法很简单,加上delay 3秒及以上就行,时间太少了,也不行。

于是上面的代码改成了

new Handler().postDelayed(new Runnable() {
public void run() {
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);

SurfaceHolder surfaceHolder = surfaceView.getHolder();

initCamera(surfaceHolder);

if (handler != null)

handler.restartPreviewAndDecode();
}

}, 3000);

这也能说得通了,为什么有断点时,就可以正常。因为断点时,我得人工去点继续,这就有时间间隔了。