本来,很简单的事,将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);
这也能说得通了,为什么有断点时,就可以正常。因为断点时,我得人工去点继续,这就有时间间隔了。