2015-02-23 163 views
2

我正在实现类似功能的音频视频通话。我正在使用AVAudioSession for Voice功能。我想配置AVAudioSession这样,它应该在接收扬声器和扬声器还有headphones.I工作,现在用的是以下初始化为AVAudioSession:AVAudioSession音频视频通话

NSError *err = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
             withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&err]; 

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&err]; 
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoChat error:&err]; 

[[AVAudioSession sharedInstance] setActive: YES error: NULL]; 

上面的代码工作正常的扬声器和耳机但扬声器的音质非常低。

我已经尝试下面的代码切换音频路由到接收器扬声器。但它不起作用。

NSError *err = nil; 
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&err]; 

有人可以帮我这个吗?

+0

嗨!你解决了这个问题吗?我有这个问题。 – Eridana 2015-11-16 14:24:34

回答

0

我得到了类似的疑难问题由

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil]; 

NSArray *outputs =[[[AVAudioSession sharedInstance] currentRoute] outputs]; 
BOOL haveSpeaker = NO; 

for (AVAudioSessionPortDescription *currentPut in outputs) { 
    if ([currentPut.portType isEqualToString:@"Speaker"]) { 
     haveSpeaker = YES; 
     break; 
    } 
} 
if (haveSpeaker) { 

    NSError *error; 
    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryRecord error:nil]; 
    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
    [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]; 
    [[AVAudioSession sharedInstance]setActive:YES error:nil]; 
} 

解决呢?在我看来AVAudioSessionCategoryOptionDefaultNone不reciver,它的默认路由。所以你改变了这种模式的默认路由;