public boolean openCamera() {
Log.i(TAG, "openCamera");
releaseCamera();
mCamera = Camera.open();
if (mCamera == null) {
Log.e(TAG, "Can't open camera!");
return false;
}
mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
synchronized (View.this) {
System.arraycopy(data, 0, mFrame[frameIndex], 0,
data.length);
View.this.notify();
}
camera.addCallbackBuffer(mBuffer);
if (frameIndex == 1) {
bufferIsSet = true;
}
frameIndex ^= 1;
}
});
return true;
}
以上是打开相机的方法。(更多代码见:https ://github.com/sungjkang/OpticalFlow/blob/master/src/com/wais/opticalflow/View.java )
使用模拟器在我的笔记本电脑上运行正常,但在我的 Nexus 4 上根本无法运行。经过一番挖掘,我注意到我在使用手机时从未进入 onPreviewFrame,但这种方法正在用我的模拟器调用。
有谁知道这里发生了什么?