@@ -36,7 +36,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
3636 var origAudioMode : String !
3737 var audioSessionInitialized : Bool = false
3838 let automatic : Bool = true
39- var forceSpeakerOn : Bool = false
39+ var forceSpeakerOn : Int = 0 //UInt8?
4040
4141 //@objc func initWithBridge(_bridge: RCTBridge) {
4242 //self.bridge = _bridge
@@ -63,6 +63,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
6363 }
6464 print ( " start() InCallManager " )
6565 self . storeOriginalAudioSetup ( )
66+ self . forceSpeakerOn = 0 ;
6667 //self.audioSession.setCategory(defaultAudioCategory, options: [.DefaultToSpeaker, .AllowBluetooth])
6768 _ = try ? self . audioSession. setCategory ( self . defaultAudioCategory)
6869 _ = try ? self . audioSession. setMode ( self . defaultAudioMode)
@@ -94,6 +95,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
9495 _ = try ? self . audioSession. setActive ( false , withOptions: . NotifyOthersOnDeactivation)
9596 self . setKeepScreenOn ( false )
9697 NSNotificationCenter . defaultCenter ( ) . removeObserver ( self )
98+ self . forceSpeakerOn = 0 ;
9799 self . audioSessionInitialized = false
98100 }
99101 }
@@ -118,13 +120,18 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
118120 print ( " ios doesn't support setSpeakerphoneOn() " )
119121 }
120122
121- @objc func setForceSpeakerphoneOn( enable : Bool ) -> Void {
122- self . forceSpeakerOn = enable
123- print ( " setForceSpeakerphoneOn( \( enable ) ) " )
124- if self . forceSpeakerOn {
123+ @objc func setForceSpeakerphoneOn( flag : Int ) -> Void {
124+ self . forceSpeakerOn = flag
125+ print ( " setForceSpeakerphoneOn( \( flag ) ) " )
126+ if self . forceSpeakerOn == 1 { // force on
125127 _ = try ? self . audioSession. overrideOutputAudioPort ( AVAudioSessionPortOverride . Speaker)
126- } else {
128+ _ = try ? self . audioSession. setMode ( AVAudioSessionModeVideoChat)
129+ } else if self . forceSpeakerOn == - 1 { //force off
130+ _ = try ? self . audioSession. overrideOutputAudioPort ( AVAudioSessionPortOverride . None)
131+ _ = try ? self . audioSession. setMode ( AVAudioSessionModeVoiceChat)
132+ } else { // use default behavior
127133 _ = try ? self . audioSession. overrideOutputAudioPort ( AVAudioSessionPortOverride . None)
134+ _ = try ? self . audioSession. setMode ( self . defaultAudioMode)
128135 }
129136 }
130137
0 commit comments