修复后的代码:
1)初始化Camera
boolean initCamera(SurfaceHolder holder) {
if (mCamera == null) {
prepareScanner();
}
if (mCamera == null) {
// prepare failed!
return false;
}
assert holder != null;
if (executor == null) {
createExecutor();
checker = initDoubleChecker();
}
if (mPreviewBuffer == null) {
int previewFormat = ImageFormat.NV21; // the default.
Camera.Parameters parameters = mCamera.getParameters();
previewFormat = parameters.getPreviewFormat();
int bytesPerPixel = ImageFormat.getBitsPerPixel(previewFormat) / 8;
int bufferSize = mPreviewWidth * mPreviewHeight * bytesPerPixel * 3;
mPreviewBuffer = new byte[recognizerNumber][bufferSize];
<span style="color:#ff0000;">for(int i=0; i<recognizerNumber; i++) {
mCamera.addCallbackBuffer(mPreviewBuffer[i]);<span style="white-space:pre"> </span>//此处添加多个buffer用于缓存onPreviewFrame中的data
}</span>
}
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
<pre name="code" class="java"><span style="color:#ff00