mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-25 15:18:11 +00:00
Fix audio route change issue when enabling a video call before the audio session was activated by call kit
This commit is contained in:
parent
8ea799e1f6
commit
b8b6344ee0
2 changed files with 6 additions and 2 deletions
|
|
@ -46,7 +46,7 @@ import AVFoundation
|
|||
var globalState : GlobalState = .Off
|
||||
var actionsToPerformOnceWhenCoreIsOn : [(()->Void)] = []
|
||||
var conference: Conference?
|
||||
|
||||
var callkitAudioSessionActivated : Bool? = nil // if "nil", ignore.
|
||||
|
||||
var backgroundContextCall : Call?
|
||||
@objc var backgroundContextCameraIsEnabled : Bool = false
|
||||
|
|
@ -633,7 +633,8 @@ import AVFoundation
|
|||
break
|
||||
}
|
||||
|
||||
if (cstate == .IncomingReceived || cstate == .OutgoingInit || cstate == .Connected || cstate == .StreamsRunning) {
|
||||
let readyForRoutechange = CallManager.instance().callkitAudioSessionActivated == nil || (CallManager.instance().callkitAudioSessionActivated == true)
|
||||
if (readyForRoutechange && (cstate == .IncomingReceived || cstate == .OutgoingInit || cstate == .Connected || cstate == .StreamsRunning)) {
|
||||
if ((call.currentParams?.videoEnabled ?? false) && CallManager.instance().isReceiverEnabled()) {
|
||||
CallManager.instance().changeRouteToSpeaker()
|
||||
} else if (isBluetoothAvailable()) {
|
||||
|
|
|
|||
|
|
@ -191,6 +191,7 @@ extension ProviderDelegate: CXProviderDelegate {
|
|||
CallManager.instance().backgroundContextCameraIsEnabled = call!.params?.videoEnabled ?? false
|
||||
call?.cameraEnabled = false // Disable camera while app is not on foreground
|
||||
}
|
||||
CallManager.instance().callkitAudioSessionActivated = false
|
||||
CallManager.instance().lc?.configureAudioSession()
|
||||
CallManager.instance().acceptCall(call: call!, hasVideo: call!.params?.videoEnabled ?? false)
|
||||
action.fulfill()
|
||||
|
|
@ -305,11 +306,13 @@ extension ProviderDelegate: CXProviderDelegate {
|
|||
func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
|
||||
Log.directLog(BCTBX_LOG_MESSAGE, text: "CallKit: audio session activated.")
|
||||
CallManager.instance().lc?.activateAudioSession(actived: true)
|
||||
CallManager.instance().callkitAudioSessionActivated = true
|
||||
}
|
||||
|
||||
func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
|
||||
Log.directLog(BCTBX_LOG_MESSAGE, text: "CallKit: audio session deactivated.")
|
||||
CallManager.instance().lc?.activateAudioSession(actived: false)
|
||||
CallManager.instance().callkitAudioSessionActivated = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue