2015-02-23 164 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,它的默認路由。所以你改變了這種模式的默認路由;