Tuesday, April 28, 2015

Swift: changing AVAudioSession route (voice from speaker to headphone and vice versa)

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleAVAudioSessionRouteChange:", name: AVAudioSessionRouteChangeNotification, object: nil)



@objc private func handleAVAudioSessionRouteChange(notification : NSNotification) {
        
        println("change route \(notification.userInfo)")
        let audioSession = AVAudioSession.sharedInstance()
        var error : NSError?
        let audioRouteChangeReason = notification.userInfo![AVAudioSessionRouteChangeReasonKey] as UInt
        
        switch audioRouteChangeReason {
        case AVAudioSessionRouteChangeReason.NewDeviceAvailable.rawValue:
            println("headphone plugged in")
        audioSession.overrideOutputAudioPort(AVAudioSessionPortOverride.None, error: &error)
        case AVAudioSessionRouteChangeReason.OldDeviceUnavailable.rawValue:
            println("headphone pulled out")
            audioSession.overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker, error: &error)
        default:
            break
        }

    }

No comments:

Post a Comment