在iOS中重新获取背景中的麦克风

在iOS中重新获取背景中的麦克风,第1张

概述我正在尝试在应用程序处于后台时获取麦克风.我正在使用音频单元技术,能够在后台录制音频.但是一旦我的AudioSession被中断,我就无法在后台使用app重启AudioSession. 注意:如果应用程序位于前台,我可以重新启动AudioSession. 这是与中断相对应的代码: - (void) beginInterruption { [[AVAudioSession sharedIns 我正在尝试在应用程序处于后台时获取麦克风.我正在使用音频单元技术,能够在后台录制音频.但是一旦我的AudioSession被中断,我就无法在后台使用app重启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);}

与AudioSession设置对应的代码

[[AVAudioSession sharedInstance] setcategory:AVAudioSessioncategoryRecord error:&error];[[AVAudioSession sharedInstance] setActive:YES error:&error];

与AudioUnit对应的代码

// Describe audio componentAudioComponentDescription desc;desc.componentType = kAudioUnitType_Output;desc.componentSubType = kAudioUnitSubType_RemoteIO;desc.componentFlags = 0;desc.componentFlagsMask = 0;desc.componentManufacturer = kAudioUnitManufacturer_Apple;// Get componentAudioComponent inputComponent = AudioComponentFindNext(NulL,&desc);// Get audio unitsoserr = AudioComponentInstanceNew(inputComponent,&m_audioUnit);checkStatus(oserr);// Enable IO for recordingUInt32 flag = 1;oserr = AudioUnitSetProperty(m_audioUnit,kAudioOutputUnitProperty_EnableIO,kAudioUnitScope_input,1,&flag,sizeof(flag));checkStatus(oserr);UInt32 enableOutput        = 0;    // to disable outputAudioUnitElement outputBus = 0;// disable outputoserr = AudioUnitSetProperty (                              m_audioUnit,kAudioUnitScope_Output,outputBus,&enableOutput,sizeof (enableOutput)                              );checkStatus(oserr);oserr = AudioUnitinitialize(m_audioUnit);oserr = AudioOutputUnitStart(m_audioUnit);

大多数流行的录制应用程序似乎都不支持它,甚至iOS本地“语音备忘录”在启动Siri时被暂停.

这些是我在EndInterruption中遇到的错误:
 AUIOClIEnt_StartIO失败(-12985)
 AURemoteIO :: ChangeHarDWareFormats:错误-10875

当应用程序处于后台时,有没有人成功重新获取麦克风?

解决方法 添加后我就开始工作了

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

在vIEwDIDAppear中.感谢MPMoviePlayerController / AVAudioSession in background doesn’t restart play after incoming call的帖子

我不清楚beginReceivingRemoteControlEvents如何影响AudioSession.

我观察到的另一个重要事项是独立于接听/拒绝电话,你会收到endInterruption事件. Apple文档会让您认为在接听电话时可能无法获得endInterruption

总结

以上是内存溢出为你收集整理的在iOS中重新获取背景中的麦克风全部内容,希望文章能够帮你解决在iOS中重新获取背景中的麦克风所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存