Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enable and disable speaker in Xcode ios 8.1 while calling

I need to enable speaker while calling from app. I can successfully enable it but I am not able to 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.

like image 574
Devang Goswami Avatar asked Dec 02 '14 09:12

Devang Goswami


People also ask

Can you disable iPhone Speaker?

Tap the round, highlighted Speaker button on your iPhone screen. This button has a picture of a speaker and says "Speaker" beneath it. By turning this off you will reduce the amplification of the sound from your iPhone speakers and return to normal phone mode.


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];
}
like image 90
Dev Avatar answered Sep 30 '22 20:09

Dev


Swift 4 for Speaker Onn Off

//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)
}
like image 20
Shakeel Ahmed Avatar answered Sep 30 '22 19:09

Shakeel Ahmed