我有一个摄像机应用程序,我希望它允许用户在手机上捕获内容。
我可以通过在收到电话和会话中断时断开音频捕获来做到这一点,但由于会话不再中断,我现在无法知道电话何时结束,并且可以重新连接音频设备。
如果我对AVCaptureSessionWasInterruptedNotification
和AVCaptureSessionInterruptionEndedNotification
使用此回调:
- (void)sessionWasInterrupted:(NSNotification *)notification {
NSLog(@"session was interrupted");
// disconnect the audio device when a call is started
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");
// reconnect the audio device when the call ends
// PROBLEM: disconnecting the audio device triggers this callback before the phone call ends...
AVCaptureDevice *device = [[self audioInput] device];
if ([device hasMediaType:AVMediaTypeAudio]) {
if ([[self session] canAddInput:[self audioInput]])
[[self session] addInput:[self audioInput]];
}
}
在电话呼叫的整个过程中,我得到一个接一个地调用它们的无限循环,并且相机被冻结。如果我没有在第二个功能中重新连接设备,则相机会继续工作,但在电话结束时不会再次呼叫sessionInterruptionEnded
。
电话结束时是否有回电信息?