我对 Android 4.0.x 的预览回调有疑问。
我设置了一个摄像头,创建了一个表面以在 previewCallback
事件上显示摄像头图像。一切正常。
但在 Android 4.0.x 中,onPreviewCallback
和 onPreviewCallbackWithBuffer
都不会被调用。
这个问题有解决方法吗?
我想截屏,不想使用 takePicture()
方式,因为它会短时间卡住实时图像。
最佳答案
您必须在 surfaceChanged 方法中调用 setPreviewCallback,而不仅仅是在 surfaceCreated 中。
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if (mHolder.getSurface() == null){
return;
}
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}
try {
mCamera.setPreviewCallback(this);
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e){
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}
关于android - 不调用带缓冲区的 PreviewCallback 和 PreviewCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13820781/