2016-03-07 16 views
7

Ho creato una fotocamera utilizzando AVCaptureSession. L'ho configurato per le modalità di registrazione foto e video .Fotocamera Fissa quando si apre l'app mentre la chiamata è in esecuzione

La fotocamera e l'app funzionano correttamente. Inoltre I è consentito riprodurre musica di sottofondo(Se l'utente riproduce brani musicali utilizzando l'app Musica nell'iPhone) mentre apre la videocamera o registra video. Funziona anche bene. (Immagine allegata 2)

mi ha permesso giocare sfondo di musica con l'aiuto di questo codice

AVAudioSession *session1 = [AVAudioSession sharedInstance]; 
    [session1 setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error:nil]; 
    [session1 setActive:YES error:nil]; 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

Ora, se si riceve una chiamata, ridurre al minimo schermo telefonata toccando tasto Home e applicazione aperta e desidera aprire lo schermo della videocamera per acquisire immagini/registrare video, Si apre ma si blocca con un'immagine (Immagine allegata (1)).

Ora il mio requisito è, voglio catturare immagini/registrare video durante una chiamata. Ho cercato altre app e Snapchat sta facendo lo stesso e sono in grado di registrare video mentre sono in servizio.

per favore aiutami, come posso ottenere questo. enter image description hereenter image description here

+0

No, ancora alla ricerca di una soluzione. – Surjeet

+0

Ho lo stesso problema nel mio progetto. Lo stesso codice viene eseguito in entrambi i casi, ma la fotocamera non è in qualche modo aperta. Hai qualche idea o soluzione finora? – virusss8

risposta

2

È necessario utilizzare i AVCaptureSessionWasInterruptedNotification e AVCaptureSessionInterruptionEndedNotification callback e scollegare la cattura audio mentre la sessione viene interrotta:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionWasInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:self.session]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInterruptionEnded:) name:AVCaptureSessionInterruptionEndedNotification object:self.session]; 
// note that self.session is an AVCaptureSession 

-

- (void)sessionWasInterrupted:(NSNotification *)notification { 
    NSLog(@"session was interrupted"); 

    AVCaptureDevice *device = [[self audioInput] device]; 
    if ([device hasMediaType:AVMediaTypeAudio]) { 
    [[self session] removeInput:[self audioInput]]; 
    [self setAudioInput:nil]; 
    } 
} 

- (void)sessionInterruptionEnded:(NSNotification *)notification { 
    NSLog(@"session interuption ended"); 
} 
// note that [self audioInput] is a getter for an AVCaptureDeviceInput 

Questo permetterà alla fotocamera di continuare l'esecuzione e consente di registrare video still/silent

Ora come per ricollegare l'audio dopo la fine della chiamata .. fammi sapere se lo capisci: Callback when phone call ends? (to resume AVCaptureSession)

+0

Grazie mille Questo è risolvere il mio problema di bigg. – Anita