5

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

我要做的就是以下几点:

  • 打开相机视图控制器
  • 拍几张照片
  • 关闭相机视图控制器
  • 再次打开它

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

我对这个问题的解决方法是根本不释放相机,因此相机视图控制器充当单例,我认为这不是正确的方法。此外,由于这种行为,当应用程序进入后台(例如电话呼叫)时,我无法找到支持相机的方法。

请指教。如何销毁相机会话?这样做重要吗?

4

2 回答 2

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];
    }
}

destroySession当持有相机的 viewController 靠近时我打电话(在我的例子中它-closeCamera:AVCamViewController)。

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

于 2011-11-07T08:46:19.980 回答
0

G

我想这可以帮助你看看。

http://red-glasses.com/index.php/tutorials/ios4-take-photos-with-live-video-preview-using-avfoundation/

于 2011-10-13T12:36:10.890 回答