Android &引用;“停止人脸检测失败”;释放相机时出现异常

Android &引用;“停止人脸检测失败”;释放相机时出现异常,android,face-detection,Android,Face Detection,我正在Galaxy Nexus上使用新的API 14+在相机预览中检测人脸。一切正常,我可以拾取人脸,但是当我试图在SurfaceHolder被破坏时关闭相机时,我得到一个RuntimeException,上面写着“停止人脸检测失败”。我用于设置和停止人脸检测的代码如下所示: public void surfaceChanged( SurfaceHolder holder, int format, int w, int h ) { if( isPreviewRunning ) {

我正在Galaxy Nexus上使用新的API 14+在相机预览中检测人脸。一切正常,我可以拾取人脸,但是当我试图在SurfaceHolder被破坏时关闭相机时,我得到一个RuntimeException,上面写着“停止人脸检测失败”。我用于设置和停止人脸检测的代码如下所示:

public void surfaceChanged( SurfaceHolder holder, int format, int w, int h ) {
    if( isPreviewRunning ) {
        camera.stopPreview();
    }
    initPreview( w, h );
    camera.startPreview();
    if( enableFaceRecognition ) {
        camera.startFaceDetection();
    }
    isPreviewRunning = true;
}

public void surfaceDestroyed( SurfaceHolder holder ) {
    if( camera != null ) {
        if( enableFaceRecognition ) {
            try {
                camera.stopFaceDetection();
            } catch( Exception e ) {
                Log.e( TAG, "Huh?", e );
            }
        }
        cameraConfigured = false;
        camera.stopPreview();
        camera.release();
        camera = null;
    }
}
哦,还有:

enableFaceRecognition = camera.getParameters().getMaxNumDetectedFaces() > 0
编辑:

以下是logcat输出:

07-31 18:59:47.809: E/Preview(9410): Huh?
07-31 18:59:47.809: E/Preview(9410): java.lang.RuntimeException: stop face detection failed
07-31 18:59:47.809: E/Preview(9410):    at android.hardware.Camera._stopFaceDetection(Native Method)
07-31 18:59:47.809: E/Preview(9410):    at android.hardware.Camera.stopFaceDetection(Camera.java:1138)
07-31 18:59:47.809: E/Preview(9410):    at app.face.Preview.surfaceDestroyed(Preview.java:126)
07-31 18:59:47.809: E/Preview(9410):    at android.view.SurfaceView.updateWindow(SurfaceView.java:517)
07-31 18:59:47.809: E/Preview(9410):    at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:226)
07-31 18:59:47.809: E/Preview(9410):    at android.view.View.dispatchWindowVisibilityChanged(View.java:5839)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:945)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:945)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:945)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:945)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:945)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:965)
07-31 18:59:47.809: E/Preview(9410):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
07-31 18:59:47.809: E/Preview(9410):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 18:59:47.809: E/Preview(9410):    at android.os.Looper.loop(Looper.java:137)
07-31 18:59:47.809: E/Preview(9410):    at android.app.ActivityThread.main(ActivityThread.java:4424)
07-31 18:59:47.809: E/Preview(9410):    at java.lang.reflect.Method.invokeNative(Native Method)
07-31 18:59:47.809: E/Preview(9410):    at java.lang.reflect.Method.invoke(Method.java:511)
07-31 18:59:47.809: E/Preview(9410):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-31 18:59:47.809: E/Preview(9410):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-31 18:59:47.809: E/Preview(9410):    at dalvik.system.NativeStart.main(Native Method)

知道是什么导致了这个异常吗?

请发布LogCat堆栈跟踪。这可能是一个愚蠢的问题,但您确定已到达
surfaceChanged
?错误可能是因为在尝试停止之前,您实际上还没有开始人脸检测。我认为这不太可能,但我认为值得一问。@Hbcdev好问题,但不,这肯定是一个开始。我在我的听众中得到人脸检测结果。