重新打开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