重新打开AVCaptureSession

我有一个应用程序,需要一些照片。 我的整个应用程序是基于WWDC 2010的AVCam示例代码。我已经搞砸了很多,但到目前为止,我无法弄清楚如何正确释放相机视图,从而释放相机会话…

我想要做的是以下几点:

  • 打开相机视图控制器
  • 拍一些照片
  • closures相机视图控制器
  • 再次打开它

第二次我推视图控制器会话丢失,预览不可用,捕获也不可用。 我已经在github上发布了完整的示例代码 。

我的问题的解决方法是不释放相机,所以相机视图控制器作为一个单身人士,我认为这是正确的方式。 此外,有了这种行为,我不能找出一种方法来支持相机,当应用程序进入后台(例如电话)。

请指教 。 如何破坏相机会话? 这么做很重要吗?

我已经将以下消息添加到AVCamCaptureManager

 - (void) destroySession { if ([delegate respondsToSelector:@selector(captureManagerSessionWillEnd:)]) { [delegate captureManagerSessionWillEnd:self]; } // remove the device inputs [session removeInput:[self videoInput]]; [session removeInput:[self audioInput]]; // release [session release]; // remove AVCamRecorder [recorder release]; if ([delegate respondsToSelector:@selector(captureManagerSessionEnded:)]) { [delegate captureManagerSessionEnded:self]; } } 

我调用destroySession时,持有相机的viewController(我的例子是-closeCamera:AVCamViewController

对于完整的工作示例,欢迎您在github.com上下载AVCam- CameraReleaseTest