gpt4 book ai didi

iphone - 在所有 View Controller 中使用 AudioUnit 初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:20 24 4
gpt4 key购买 nike

我正在开发应用程序,我在其中引用苹果的 aurioTouch 应用程序来显示波形。 要求我必须在每个 View Controller 的顶部显示波形。所以,我在 firstViewController 的 viewDidLoad 方法中设置了 AudioUnit。

    XThrowIfError(AudioSessionInitialize(NULL, NULL, rioInterruptionListener, self), "couldn't initialize audio session");

UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
XThrowIfError(AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory), "couldn't set audio category");
XThrowIfError(AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, propListener, self), "couldn't set property listener");

Float32 preferredBufferSize = .005;
XThrowIfError(AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferSize), &preferredBufferSize), "couldn't set i/o buffer duration");

UInt32 size = sizeof(hwSampleRate);
XThrowIfError(AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareSampleRate, &size, &hwSampleRate), "couldn't get hw sample rate");

XThrowIfError(AudioSessionSetActive(true), "couldn't set audio session active\n");

XThrowIfError(SetupRemoteIO(rioUnit, inputProc, thruFormat), "couldn't setup remote i/o unit");

在这里我可以显示输入声音的波形,现在,当我点击 secondTab 时,在 FirstviewController 的 viewWillDisappear 方法中我将停止 AudioUnit。

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:YES];
AudioOutputUnitStop(rioUnit);
AudioUnitUninitialize(rioUnit);
AudioSessionSetActive(false);
//[self performSelectorOnMainThread:@selector(disposeCoreAudio) withObject:nil waitUntilDone:NO];
//[eaglView stopAnimation];
}

在 secondViewController 中我再次尝试初始化 AudioUnit

XThrowIfError(AudioSessionInitialize(NULL, NULL, rioInterruptionListener, self), "couldn't initialize audio session");

但它显示异常:即将抛出“init”:无法初始化 Audio Session 错误:无法初始化 Audio Session ('init')

在第一个 viewController 中,我能够停止 AudioUnit 的实例,但无法在 secondViewController 中再次初始化它。 谁能帮我摆脱这种情况?

最佳答案

不要让您的音频单元由 View Controller 控制,制作一个只处理它的单例 Controller 。然后您可以从任何音频单元获取该 Controller 的共享实例。

顺便说一句,我强烈推荐使用 Novacaine在那个 Controller 中,它使音频单元使用起来更有趣:更少的 C++,更多的 ObjC。 :-)

关于iphone - 在所有 View Controller 中使用 AudioUnit 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601146/

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