2012-04-12 17 views
1

Ich arbeite an einer Augmented Reality App, die eine AVCaptureVideoPreviewLayer verwendet, um den Video-Feed von der Kamera des Geräts anzuzeigen. Wenn Sie die App schließen und erneut öffnen (durch Drücken der Home-Taste, nicht durch gewaltsames Beenden) oder das Telefon in den Ruhezustand versetzen und dann wieder aufwecken, zeigt das AVCaptureVideoPreviewLayer ein schwarzes Rechteck anstelle des Feeds der Kamera an.AVCaptureVideoPreviewLayer zeigt nichts in Fortsetzung

ich die Aufnahmesitzung am Initialisierung in folgt als meine viewDidLoad:

captureSession = [[AVCaptureSession alloc] init]; 

AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
if (videoDevice) { 
    NSError *error; 
    AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error]; 
    if (!error) { 
     if ([captureSession canAddInput:videoIn]) 
      [captureSession addInput:videoIn]; 
     else 
      NSLog(@"Couldn't add video input"); 
    } else 
     NSLog(@"Couldn't create video input"); 
} else 
    NSLog(@"Couldn't create video capture device"); 

[captureSession startRunning]; 

AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession]; 
previewLayer.frame = cameraView.bounds; 
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
[[cameraView layer] addSublayer:previewLayer]; 

Antwort

0

Sie müssen die interrupt Flagge Ihres AVCaptureSession mit KVO und reagieren auf sie beobachten.

Vom AVCaptureSession Reference:

interrupted 

Gibt an, ob der Empfänger unterbrochen wurde. (Read-only)

@property(nonatomic, readonly, getter=isInterrupted) BOOL interrupted 
Discussion 

Sie den Wert dieser Eigenschaft beobachten Schlüsselwert mit

Erhältlich in iOS 4.0 zu beobachten und später. In AVCaptureSession.h

+4

Wie reagieren Sie darauf? – Alper