Tengo una ventana de vista previa de la cámara que funciona bien el 90% del tiempo. A veces, sin embargo, al volver a mi aplicación si ha estado en segundo plano, la vista previa no se mostrará. Este es el código que llamo cuando la vista cargas:AVCaptureSession falla al volver desde el fondo
- (void) startCamera {
session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = _cameraView.bounds;
[_cameraView.layer addSublayer:captureVideoPreviewLayer];
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
captureVideoPreviewLayer.position=CGPointMake(CGRectGetMidX(_cameraView.bounds), 160);
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (!input) {
NSLog(@"ERROR: %@", error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Important!"
message:@"Unable to find a camera."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert autorelease];
}
[session addInput:input];
stillImage = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG , AVVideoCodecKey, nil];
[stillImage setOutputSettings:outputSettings];
[session addOutput:stillImage];
[session startRunning];
}
Si esto sucede, puedo cambiar a mi modo de ver las preferencias y de vuelta otra vez y Al es bueno, pero es un molesto error que me gustaría matar. La ventana de vista previa es una UIView en mi guión gráfico.
Gracias, lo haré y lo probaré por unas horas :) – mrEmpty
solución fantástica ....... –
Espera - ¿no es cierto que 'viewWillAppear' /' Disappear' solo se llama a medida que la escena se mueve en tu aplicación: ¿no se les llama cuando la aplicación entra y sale del primer plano? ¿No sería necesario registrarse para 'UIApplicationWillResignActiveNotification' y usar eso? [QA con un ejemplo de eso] (http://stackoverflow.com/a/22868754/294884) – Fattie