From 37b70f4f327f6b44dd30336844ccbe9833ffd940 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 21 Oct 2024 14:43:34 +0200 Subject: [PATCH] Fix meeting waiting room when headphone is connected --- Linphone/UI/Call/MeetingWaitingRoomFragment.swift | 9 ++++++--- .../ViewModel/MeetingWaitingRoomViewModel.swift | 15 +++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Linphone/UI/Call/MeetingWaitingRoomFragment.swift b/Linphone/UI/Call/MeetingWaitingRoomFragment.swift index 8f8920261..e1fae5807 100644 --- a/Linphone/UI/Call/MeetingWaitingRoomFragment.swift +++ b/Linphone/UI/Call/MeetingWaitingRoomFragment.swift @@ -52,7 +52,9 @@ struct MeetingWaitingRoomFragment: View { }) .onAppear { meetingWaitingRoomViewModel.enableAVAudioSession() - if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty { + if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ + $0.portType.rawValue.contains("Bluetooth") || $0.portType.rawValue.contains("Headphones") + }).isEmpty { do { try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker) } catch _ { @@ -72,8 +74,9 @@ struct MeetingWaitingRoomFragment: View { } .onAppear { meetingWaitingRoomViewModel.enableAVAudioSession() - - if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty { + if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ + $0.portType.rawValue.contains("Bluetooth") || $0.portType.rawValue.contains("Headphones") + }).isEmpty { do { try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker) } catch _ { diff --git a/Linphone/UI/Call/ViewModel/MeetingWaitingRoomViewModel.swift b/Linphone/UI/Call/ViewModel/MeetingWaitingRoomViewModel.swift index 24d4b1480..365f78d2d 100644 --- a/Linphone/UI/Call/ViewModel/MeetingWaitingRoomViewModel.swift +++ b/Linphone/UI/Call/ViewModel/MeetingWaitingRoomViewModel.swift @@ -50,6 +50,11 @@ class MeetingWaitingRoomViewModel: ObservableObject { func resetMeetingRoomView() { if self.telecomManager.meetingWaitingRoomSelected != nil { + do { + try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .voiceChat, options: .allowBluetooth) + } catch _ { + + } coreContext.doOnCoreQueue { core in let conf = core.findConferenceInformationFromUri(uri: self.telecomManager.meetingWaitingRoomSelected!) @@ -73,10 +78,12 @@ class MeetingWaitingRoomViewModel: ObservableObject { if friend != nil && friend!.address != nil && friend!.address!.displayName != nil { userNameTmp = friend!.address!.displayName! } else { - if core.defaultAccount!.contactAddress!.displayName != nil { - userNameTmp = core.defaultAccount!.contactAddress!.displayName! - } else if core.defaultAccount!.contactAddress!.username != nil { - userNameTmp = core.defaultAccount!.contactAddress!.username! + if core.defaultAccount != nil && core.defaultAccount!.contactAddress != nil { + if core.defaultAccount!.contactAddress!.displayName != nil { + userNameTmp = core.defaultAccount!.contactAddress!.displayName! + } else if core.defaultAccount!.contactAddress!.username != nil { + userNameTmp = core.defaultAccount!.contactAddress!.username! + } } }