Enable and disable speaker in Xcode ios 8.1 when called

I need to turn on the speaker when calling from the application. I can successfully enable it, but I cannot disable it.

I am using this method:

[[UIDevice currentDevice] setProximityMonitoringEnabled:NO]; NSLog(@"%d",enable); UInt32 route; route = enable ? kAudioSessionOverrideAudioRoute_Speaker : kAudioSessionOverrideAudioRoute_None; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route); 

Thanks in advance.

+5
source share
2 answers

AudioSessionSetProperty is deprecated. https://developer.apple.com/library/ios/documentation/audiotoolbox/reference/audiosessionservicesreference/index.html#//apple_ref/c/func/AudioSessionSetProperty

 - (void)setAudioOutputSpeaker:(BOOL)enabled { AVAudioSession *session = [AVAudioSession sharedInstance]; NSError *error; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; [session setMode:AVAudioSessionModeVoiceChat error:&error]; if (enabled) // Enable speaker { [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]; } else // Disable speaker { [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]; } [session setActive:YES error:&error]; } 
+13
source

Swift 4 for speaker enabled

 //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) } 
0
source

Source: https://habr.com/ru/post/1208126/


All Articles