我试图将我的应用程序的一些相机相关的功能。 我手动打开摄像头,并得到与预览流setPreviewCallback
和startPreview
。 我不使用表面显示预览,但我将它设置为符合照相机API文档。 这是我打开摄像头:
public Camera openCamera(int id)
{
m_openedCamera = Camera.open(id);
m_surfaceHolder = new SurfaceView(MyApplication.instance().getApplicationContext()).getHolder();
Assert.assertNotNull(m_openedCamera);
m_openedCamera.setPreviewDisplay(m_surfaceHolder);
m_openedCameraFacing = facing;
if (m_openedCamera != null)
m_openedCamera.setPreviewCallback(this);
m_openedCamera.startPreview();
}
这是我释放它,没有什么花哨这里:
public void releaseCamera()
{
if (m_openedCamera != null)
{
m_openedCamera.stopPreview();
m_openedCamera.release();
m_openedCamera = null;
}
}
它还挺工作在第一,但我松开相机,我得到一个异常“()方法释放后称为”。 为了澄清:我不叫任何相机的方法相机已被释放之后。 在调试器,我没有双重和三重检查。 我觉得这里有同步和异步调用引起该问题的混合。