我正在做一个使用相机的Android应用程序。 我正在使用facedetection侦听器并且运行正常,但是当我尝试添加预览回调来执行某些进程任务时,人脸检测会停止运行。
为什么?
这是我的代码:
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = StartCapture();
mCamera.setPreviewCallback(framesCallback);
mCamera.setFaceDetectionListener(faceDetectionListener);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (mCamera != null) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
mCamera.startFaceDetection();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopFaceDetection();
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
这是我使用它们时产生的logcat:
02-11 14:35:14.376: E/mm-camera-img(197): FACEPROC_Detection returned error: -3
02-11 14:35:14.376: E/mm-camera-img(197): face_proc_thread_loop:466] frameproc exec error -1
02-11 14:35:14.510: E/mm-camera-img(197): FACEPROC_Detection returned error: -3
02-11 14:35:14.510: E/mm-camera-img(197): face_proc_thread_loop:466] frameproc exec error -1
02-11 14:35:14.643: E/mm-camera-img(197): FACEPROC_Detection returned error: -3
02-11 14:35:14.643: E/mm-camera-img(197): face_proc_thread_loop:466] frameproc exec error -1
答案 0 :(得分:0)
回答已经太迟了,但我遇到了同样的情况。将setPreviewCallback()的位置移动到startFaceDetection()之后,它可以工作。