gpt4 book ai didi

objective-c - 无法在 iOS 后台模式下重新启动中断的音频输入队列

转载 作者:可可西里 更新时间:2023-11-01 03:09:40 25 4
gpt4 key购买 nike

我正在编写一个使用 AudioQueue 进行录音的 iOS 应用程序。我创建了一个配置为获得线性 PCM 的输入队列,声明了这个队列并且一切都按预期工作。

为了管理中断,我实现了 AVAudioSession 的委托(delegate)方法来捕获中断的开始和结束。 endInterruption 方法如下所示:

- (void)endInterruptionWithFlags:(NSUInteger)flags;
{
if (flags == AVAudioSessionInterruptionFlags_ShouldResume && audioQueue != 0) {

NSLog(@"Current audio session - category: '%@' mode: '%@'",
[[AVAudioSession sharedInstance] category],
[[AVAudioSession sharedInstance] mode]);

NSError *error = nil;
OSStatus errorStatus;
if ((errorStatus = AudioSessionSetActive(true)) != noErr) {
error = [self errorForAudioSessionServiceWithOSStatus:errorStatus];
NSLog(@"Could not reactivate the audio session: %@",
[error localizedDescription]);
} else {
if ((errorStatus = AudioQueueStart(audioQueue, NULL)) != noErr) {
error = [self errorForAudioQueueServiceWithOSStatus:errorStatus];
NSLog(@"Could not restart the audio queue: %@",
[error localizedDescription]);
}
}
}
// ...
}

如果应用程序在前台运行时被中断,一切正常。如果中断发生在后台,就会出现问题。激活 Audio Session 会导致错误 !cat:

The specified audio session category cannot be used for the attempted audio operation. For example, you attempted to play or record audio with the audio session category set to kAudioSessionCategory_AudioProcessing.

在未激活 session 的情况下启动队列会导致错误代码:-12985

此时类别设置为AVAudioSessionCategoryPlayAndRecord,模式为AVAudioSessionModeDefault

我找不到此错误消息的任何文档,也找不到是否可以在后台重新启动输入音频队列。

最佳答案

是的,这是可能的,但要在后台重新激活 session , Audio Session 必须设置 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];

关于objective-c - 无法在 iOS 后台模式下重新启动中断的音频输入队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com