2016-03-07 16 views
7

Tôi đã tạo một máy ảnh bằng AVCaptureSession. Tôi đã định cấu hình cho chế độ ghi hình ảnh và video .Camera đóng băng khi mở ứng dụng trong khi cuộc gọi đang chạy

Máy ảnh và ứng dụng đang chạy tốt. Đồng thời I cho phép phát nhạc nền(Nếu người dùng phát bài hát bằng ứng dụng Nhạc trong iPhone) trong khi đang mở camera hoặc quay video. Nó cũng làm việc tốt. (Ban hành kèm hình ảnh 2)

tôi cho phép nền âm nhạc chơi với sự giúp đỡ của mã này

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

Bây giờ nếu tôi nhận được một cuộc gọi, hạn chế tối đa màn hình cuộc gọi điện thoại bằng cách khai thác trên nút Home và ứng dụng mở và muốn mở màn hình camera để chụp ảnh/quay video, Nó mở ra nhưng đóng băng với một hình ảnh (Ảnh đính kèm (1)).

Bây giờ yêu cầu của tôi là, tôi muốn chụp ảnh/quay video trong khi đang gọi điện thoại. Tôi đã tìm kiếm một ứng dụng khác và Snapchat đang thực hiện tương tự và tôi có thể quay video trong khi đang gọi điện.

hãy giúp tôi, làm cách nào tôi có thể đạt được điều này. enter image description hereenter image description here

+0

Không, vẫn đang tìm kiếm giải pháp. – Surjeet

+0

Tôi có cùng một vấn đề trong dự án của mình. Cùng một mã được thực hiện trong cả hai trường hợp, nhưng máy ảnh bằng cách nào đó không được mở. Bạn có bất kỳ ý tưởng hoặc giải pháp cho đến nay? – virusss8

Trả lời

2

Bạn cần phải sử dụng AVCaptureSessionWasInterruptedNotificationAVCaptureSessionInterruptionEndedNotification callbacks và ngắt kết nối chụp âm thanh trong khi phiên giao dịch bị gián đoạn:

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

này sẽ cho phép máy ảnh để tiếp tục chạy và cho phép nó ghi lại video tĩnh/im lặng

Bây giờ, về cách kết nối lại âm thanh sau khi cuộc gọi kết thúc .. hãy cho tôi biết nếu bạn tìm ra âm thanh: Callback when phone call ends? (to resume AVCaptureSession)

+0

Cảm ơn bạn rất nhiều Điều này giải quyết vấn đề bigg của tôi. – Anita

Các vấn đề liên quan