重新打开AVCaptureSession

Ela*_*adG 5 iphone cocoa-touch avfoundation ios avcam

我有一个应用程序,需要一些照片.我的整个应用程序都是基于WWDC 2010 的AVCam示例代码.我已经搞砸了很多但直到现在我还无法弄清楚如何正确释放相机视图以释放相机会话......

我要做的就是以下几点:

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

第二次推送viewController会话丢失,预览不可用,捕获也不可用.我在github上发布了完整的示例代码.

我对这个问题的解决方法是根本不释放相机,因此Camera View Controller充当Singleton,我认为这不是正确的方法.此外,有了这种行为,我无法找到一种方法来支持相机应用程序进入后台(例如电话).

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

Ela*_*adG 5

我已添加以下消息 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在调用destroySession拿着相机的viewController接近(在我的例子-closeCamera:AVCamViewController).

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