呼叫时启用和禁用Xcode ios 8.1中的扬声器

呼叫时启用和禁用Xcode ios 8.1中的扬声器,ios,iphone,xcode,audio,Ios,Iphone,Xcode,Audio,我需要在从应用程序呼叫时启用扬声器。我可以成功启用它,但无法禁用它 我使用的方法是: [[UIDevice currentDevice] setProximityMonitoringEnabled:NO]; NSLog(@"%d",enable); UInt32 route; route = enable ? kAudioSessionOverrideAudioRoute_Speaker : kAudioSessionOverrideAudioRoute_None; AudioSession

我需要在从应用程序呼叫时启用扬声器。我可以成功启用它,但无法禁用它

我使用的方法是:

[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
NSLog(@"%d",enable);

UInt32 route;
route = enable ? kAudioSessionOverrideAudioRoute_Speaker :
kAudioSessionOverrideAudioRoute_None;

AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
                         sizeof(route), &route);

提前感谢。

AudioSessionSetProperty已被弃用。


扬声器开关的Swift 4

//MARK:- Usage  for Enable
self.setAudioOutputSpeaker(enabled: true)

//MARK:- Usage  for Disable
self.setAudioOutputSpeaker(enabled: false)

//MARK:- Manual Speaker Enagle and Disable
func setAudioOutputSpeaker(enabled: Bool)
{
    let session = AVAudioSession.sharedInstance()
    var _: Error?
    try? session.setCategory(AVAudioSessionCategoryPlayAndRecord)
    try? session.setMode(AVAudioSessionModeVoiceChat)
    if enabled {
        try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
    } else {
        try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.none)
    }
    try? session.setActive(true)
}

hiii,谢谢回复,它启用了扬声器,但不会禁用它!给我的错误如下:主/声音下溢,buf_cnt=0,将生成1帧它启用但不能禁用!它对我有用。您可以粘贴完整的错误日志并检查是否有其他内容覆盖了您的音频设备16:52:27.501 strm0x1795f214 VAD REE enabled 16:52:37.709 Master/sound UNDROW,buf_cnt=0,将在我收到呼叫时生成1帧,并使用您提供的代码启用扬声器,当尝试禁用时,它会显示这一点。
//MARK:- Usage  for Enable
self.setAudioOutputSpeaker(enabled: true)

//MARK:- Usage  for Disable
self.setAudioOutputSpeaker(enabled: false)

//MARK:- Manual Speaker Enagle and Disable
func setAudioOutputSpeaker(enabled: Bool)
{
    let session = AVAudioSession.sharedInstance()
    var _: Error?
    try? session.setCategory(AVAudioSessionCategoryPlayAndRecord)
    try? session.setMode(AVAudioSessionModeVoiceChat)
    if enabled {
        try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
    } else {
        try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.none)
    }
    try? session.setActive(true)
}