相机在通话正在运行时打开应用程序时冻结
我使用AVCaptureSession创建了一个相机 。 我已经配置了照片和录像模式 。
相机和应用程序运行良好。 此外,我还允许背景音乐播放 (如果用户使用iPhone中的音乐应用播放歌曲),同时打开相机或录制视频。 它也工作正常。 (附图2)
我在这段代码的帮助下允许背景音乐播放
AVAudioSession *session1 = [AVAudioSession sharedInstance];
[session1 setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error:nil];
[session1 setActive:YES error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
现在,如果我接到来电 ,通过点击主页按钮并打开应用程序并希望打开相机屏幕以捕获图像/录制视频,最小化电话呼叫屏幕,它会打开但冻结图像(附加图像(1))。
现在我的要求是,我想在通话时捕捉图像/录制视频。 我寻找另一个应用程序,并且Snapchat也是这样做的 ,而且我可以在我打电话时录制视频。
请帮助我,我该如何做到这一点。
您需要使用AVCaptureSessionWasInterruptedNotification
和AVCaptureSessionInterruptionEndedNotification
回调函数,并在会话中断时断开音频捕获:
[[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
这将使相机继续运行,并允许它捕捉静止/无声视频
现在至于如何重新连接通话结束后的音频..让我知道,如果你弄明白,从iOS 10似乎不可能:电话通话结束时回拨? (恢复AVCaptureSession)
链接地址: http://www.djcxy.com/p/32787.html上一篇: Camera Freeze when open app while call is running
下一篇: what is the proper way to create a swagger web service in TypeScript