@@ -36,7 +36,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
36
36
var origAudioMode : String !
37
37
var audioSessionInitialized : Bool = false
38
38
let automatic : Bool = true
39
- var forceSpeakerOn : Bool = false
39
+ var forceSpeakerOn : Int = 0 //UInt8?
40
40
41
41
//@objc func initWithBridge(_bridge: RCTBridge) {
42
42
//self.bridge = _bridge
@@ -63,6 +63,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
63
63
}
64
64
print ( " start() InCallManager " )
65
65
self . storeOriginalAudioSetup ( )
66
+ self . forceSpeakerOn = 0 ;
66
67
//self.audioSession.setCategory(defaultAudioCategory, options: [.DefaultToSpeaker, .AllowBluetooth])
67
68
_ = try ? self . audioSession. setCategory ( self . defaultAudioCategory)
68
69
_ = try ? self . audioSession. setMode ( self . defaultAudioMode)
@@ -94,6 +95,7 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
94
95
_ = try ? self . audioSession. setActive ( false , withOptions: . NotifyOthersOnDeactivation)
95
96
self . setKeepScreenOn ( false )
96
97
NSNotificationCenter . defaultCenter ( ) . removeObserver ( self )
98
+ self . forceSpeakerOn = 0 ;
97
99
self . audioSessionInitialized = false
98
100
}
99
101
}
@@ -118,13 +120,18 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate {
118
120
print ( " ios doesn't support setSpeakerphoneOn() " )
119
121
}
120
122
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
125
127
_ = 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
127
133
_ = try ? self . audioSession. overrideOutputAudioPort ( AVAudioSessionPortOverride . None)
134
+ _ = try ? self . audioSession. setMode ( self . defaultAudioMode)
128
135
}
129
136
}
130
137
0 commit comments