2016-02-01 20 views
6

一定条件下AVAudioPlayer问题。 在第一我的录音机工作的罚款一般。但是VOIP呼叫,并从built_in_Speaker发挥环和许多工作与音频会议结束后,挂断电话后,我不能拍摄有声音响在第一!但第二次,每件事情都很好。 问题AVAudioRecorder尚未健全

在条件,我已经提到我的音频记录,但没有语音!

我想知道在这种情况下可能发生的?

self.audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

BOOL preparedToRecord = [self.audioRecorder prepareToRecord]; 
__block BOOL recordStarted = NO; 

err = nil; 
[self.audioSession setActive:YES error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

if (preparedToRecord){ 
    recordStarted = [self.audioRecorder record]; 
} 

回答

4

解决

我发现这个问题的原因。 我有addObserve我自己赶上AVAudioSession的通知,并检查AudioSession中断/ RoutChanging! 问题是我的电话后,我已经尝试改变音频路由到扬声器但addobserved为AudioRoutChanging通知一类试图阻止。所以音频会话路由每秒都会改变,并且无法录制音频。

结论 你应该录制音频这样做:

1)确保肯定许可

2)[self.audioSession setActive:YES error:&err]; 

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

4)有关路线不要在变化记录。

4)确定自己的目标音色

-1

录制音频需要用户的明确许可。您的应用程序的音频会话尝试同时使用一个类别,使记录使用的音频输入路径的第一次,系统会自动提示用户授予权限。您可以通过调用requestRecordPermission:方法明确地询问。在用户授予您的应用程序的录制权限之前,您的应用程序只能录制静音。

参考这里: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

+0

我必须得到许可在首批推出的应用程序,并且我已经提到我在调用中使用的音频会话,它工作正常! 我修复了我在这里很快解释的问题。 tnx您的回复! – Mohamad