java.lang.RuntimeException: Camera is being used after Camera.release() was called

ava.lang.RuntimeException: Camera is being used after Camera.release() was called

错误就是上述这个错误,错误出现在Android相机开发中,我所实现的方法贴一下:

[java] view plain copy

@Override  

public void surfaceDestroyed(SurfaceHolder holder) {  

if (!isOpenCamera)  

return;  

mCamera.setPreviewCallback(null);  

    mCamera.stopPreview();  

    mCamera.lock();  

    mCamera.release();  

mCamera =null;  

}  

乍一看没啥错误,但是这个错误会在不经意间蹦出来影响应用的运行,直接就AAR了.所以为了解决这个错误,需要在camera调用setPreviewCallback之前加上一句代码,加完代码后的方法为:

[java] view plain copy

@Override  

public void surfaceDestroyed(SurfaceHolder holder) {  

if (!isOpenCamera)  

return;  

holder.removeCallback(this);  

mCamera.setPreviewCallback(null);  

    mCamera.stopPreview();  

    mCamera.lock();  

    mCamera.release();  

mCamera =null;  

}  

到此我的问题已经解决,但是我正在想为什么这么做?

对于无法分屏,建议配置不分屏,即不会FC。

你可能感兴趣的:(java.lang.RuntimeException: Camera is being used after Camera.release() was called)