2016-03-07 33 views
7

Utworzono kamerę przy użyciu AVCaptureSession. Skonfigurowałem to dla zarówno w trybach nagrywania zdjęć, jak i wideo.Aparat Zatrzymuje się, gdy otwarta aplikacja jest uruchomiona

Aparat i aplikacja działa poprawnie. Również I dozwolone odtwarzanie muzyki w tle(Jeśli użytkownik odtwarza utwór za pomocą aplikacji Muzyka w iPhone) podczas otwierania aparatu lub nagrywania wideo. Działa również dobrze. (Załączone zdjęcie 2)

Pozwoliłem tło odtwarzania muzyki za pomocą tego kodu

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

Teraz, gdy nadchodzi połączenie, zminimalizować ekran rozmowy telefonicznej poprzez dotknięcie przycisku Home i otwartej aplikacji i chcesz otworzyć ekran aparatu, aby przechwycić obraz/nagrać wideo, Otwiera się, ale zamiera z obrazem (Załączony obraz (1)).

Teraz moim wymaganiem jest, aby przechwytywać obraz/nagrywać wideo podczas rozmowy telefonicznej. Poszukałem kolejnych aplikacji i Snapchat robi to samo, co, i jestem w stanie nagrywać wideo, gdy jestem na dyżurze.

pomóżcie mi, jak mogę to osiągnąć. enter image description hereenter image description here

+0

Nie, wciąż szukam rozwiązania. – Surjeet

+0

Mam ten sam problem w moim projekcie. Ten sam kod jest wykonywany w obu przypadkach, ale kamera nie jest w jakiś sposób otwarta. Czy masz jakieś pomysły lub rozwiązania do tej pory? – virusss8

Odpowiedz

2

Musisz użyć AVCaptureSessionWasInterruptedNotification i AVCaptureSessionInterruptionEndedNotification zwrotnych i odłączyć przechwytywanie dźwięku, podczas gdy sesja zostanie przerwana:

[[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 

Pozwoli aparat nadal działa i pozwala na nagrywanie nieruchomego/niemego wideo

Teraz, aby ponownie połączyć dźwięk po zakończeniu połączenia .. daj mi znać, jeśli to zrozumiesz: Callback when phone call ends? (to resume AVCaptureSession)

+0

Dziękuję bardzo To rozwiązuje mój problem z biggiem. – Anita