标签: avaudiosessiondelegate

iOS 后台重新获取麦克风

我试图在应用程序处于后台时获取麦克风。我正在使用音频单元技术,并且能够在后台录制音频。但是一旦我的 AudioSession 被中断,我就无法在后台使用应用程序重新启动 AudioSession。注意:如果应用程序位于前台,我可以重新启动 AudioSession。下面是中断对应的代码:

- (void) beginInterruption {
    [[AVAudioSession sharedInstance] setActive:NO error:&error];
    AudioOutputUnitStop(m_audioUnit);
}
- (void) endInterruptionWithFlags:(NSUInteger) flags{
    [[AVAudioSession sharedInstance] setActive:YES error:&error];
    AudioOutputUnitStart(m_audioUnit);
}
Run Code Online (Sandbox Code Playgroud)

AudioSession设置对应的代码

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
Run Code Online (Sandbox Code Playgroud)

AudioUnit对应的代码

// Describe audio component
AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_RemoteIO;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;

// Get component
AudioComponent inputComponent = AudioComponentFindNext(NULL, &desc);

// Get audio units
oserr = AudioComponentInstanceNew(inputComponent, &m_audioUnit);
checkStatus(oserr);

// Enable IO for recording
UInt32 flag …
Run Code Online (Sandbox Code Playgroud)

audiounit ios avaudiosession avaudiosessiondelegate

5
推荐指数
1
解决办法
4598
查看次数