我的简单项目进行录音。我有两个按钮,一个是“开始录制”,一个是“停止录制”。
按“开始录制”按钮时,我的代码激活音频会话,开始录音:
//Activate audio session
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory: AVAudioSessionCategoryRecord];
NSError *err;
[audioSession setActive:YES error: &err];
…
recorder = [AVAudioRecorder init: …];
[recorder delegate] = self;
[recorder prepareToRecord];
// Start recording
[recorder record];
按“停止录制”按钮时,我的代码停止录制& 停用音频会话:
//pause & stop recording
[recorder pause];
[recorder stop];
recorder = nil;
//Deactivate audio session
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:NO error:&err];
当我运行我的应用程序时,按“开始录制”,它开始录制正常。然后我按下“停止录制”也工作正常,它已成功停止录制。
但是现在如果我再次按“开始录制”按钮,[audioSession setActive:YES error: &err];
会引发以下错误:
audioSession: "NSOSStatusErrorDomain" "The operation couldn’t be completed. (OSStatus error 560557684.)" "[:]"
为什么呢?如何摆脱它?
==更新==
我也尝试在延迟30秒后调用会话setActive
,但这没有帮助。