通话后的iOS背景音频录音

时间:2014-03-10 21:36:51

标签: ios audio-recording

我正在开发一个在后台录制音频的iOS应用程序。这很好。
问题是当一个电话进来时:我正在呼叫应用程序停止记录(这很好)但是当呼叫结束时,我需要应用程序开始再次记录。

有可能吗?我怎么能这样做?

感谢所有人。

更新

我使用AudioQueueNewInput录制音频。现在我正在尝试使用此代码来接听来电:

AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *categoryError = nil;
[session setActive: NO error: nil];
if (![session  setCategory:AVAudioSessionCategoryPlayAndRecord
               withOptions:AVAudioSessionCategoryOptionMixWithOthers
                     error:&categoryError]){
    NSLog(@"Error"); //no error
}
[session setActive: YES error: nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleAudioSessionInterruption:)
                                             name:AVAudioSessionInterruptionNotification
                                           object:session];

我可以通过AVAudioSessionInterruptionOptionShouldResume获取handleAudioSessionInterruption的调用结束,但是如何重新启动录音机呢?

我试图再次调用AudioQueueStart o我用来开始录制的相同功能,但是我看不到红色条(使用的麦克风)知道应用正在录制。怎么了?

1 个答案:

答案 0 :(得分:4)

请看这个问题: Can not restart an interrupted audio input queue in background mode on iOS

  

是的,但可以在后台重新激活会话,   音频会话必须设置AudioSessionProperty   kAudioSessionProperty_OverrideCategoryMixWithOthers

OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty (
                   kAudioSessionProperty_OverrideCategoryMixWithOthers,
                   sizeof (allowMixing),
                   &allowMixing);
     

或应用必须receive remote control command events

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];