forked from mirrors/linphone-iphone
Set default Bluetooth device when available in MeetingWaitingRoom
This commit is contained in:
parent
8d425c40e6
commit
65a98c6030
2 changed files with 27 additions and 28 deletions
|
|
@ -50,11 +50,12 @@ struct MeetingWaitingRoomFragment: View {
|
|||
}
|
||||
.onAppear {
|
||||
meetingWaitingRoomViewModel.enableAVAudioSession()
|
||||
|
||||
do {
|
||||
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
||||
} catch _ {
|
||||
|
||||
if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty {
|
||||
do {
|
||||
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
||||
} catch _ {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
.onDisappear {
|
||||
|
|
@ -70,10 +71,12 @@ struct MeetingWaitingRoomFragment: View {
|
|||
.onAppear {
|
||||
meetingWaitingRoomViewModel.enableAVAudioSession()
|
||||
|
||||
do {
|
||||
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
||||
} catch _ {
|
||||
|
||||
if AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty {
|
||||
do {
|
||||
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
||||
} catch _ {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
.onDisappear {
|
||||
|
|
@ -314,9 +317,9 @@ struct MeetingWaitingRoomFragment: View {
|
|||
.resizable()
|
||||
.foregroundStyle(.white)
|
||||
.frame(width: 32, height: 32)
|
||||
.onAppear(perform: meetingWaitingRoomViewModel.getAudioRouteImage)
|
||||
.onAppear(perform: getAudioRouteImage)
|
||||
.onReceive(pub) { _ in
|
||||
self.meetingWaitingRoomViewModel.getAudioRouteImage()
|
||||
self.getAudioRouteImage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -550,6 +553,19 @@ struct MeetingWaitingRoomFragment: View {
|
|||
.background(Color.gray600)
|
||||
.frame(maxHeight: .infinity)
|
||||
}
|
||||
|
||||
func getAudioRouteImage() {
|
||||
if !AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue == "Speaker" }).isEmpty {
|
||||
meetingWaitingRoomViewModel.imageAudioRoute = "speaker-high"
|
||||
options = 2
|
||||
} else if !AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty {
|
||||
meetingWaitingRoomViewModel.imageAudioRoute = "bluetooth"
|
||||
options = 3
|
||||
} else {
|
||||
meetingWaitingRoomViewModel.imageAudioRoute = meetingWaitingRoomViewModel.isHeadPhoneAvailable() ? "headset" : "speaker-slash"
|
||||
options = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
|
|
|
|||
|
|
@ -217,23 +217,6 @@ class MeetingWaitingRoomViewModel: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
func getAudioRouteImage() {
|
||||
print("AVAudioSessionAVAudioSession getAudioRouteImage \(imageAudioRoute)")
|
||||
imageAudioRoute = AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue == "Speaker" }).isEmpty
|
||||
? (
|
||||
AVAudioSession.sharedInstance().currentRoute.outputs.filter({ $0.portType.rawValue.contains("Bluetooth") }).isEmpty
|
||||
? (
|
||||
isHeadPhoneAvailable()
|
||||
? "headset"
|
||||
: "speaker-slash"
|
||||
)
|
||||
: "bluetooth"
|
||||
)
|
||||
: "speaker-high"
|
||||
|
||||
print("AVAudioSessionAVAudioSession getAudioRouteImage \(imageAudioRoute)")
|
||||
}
|
||||
|
||||
func isHeadPhoneAvailable() -> Bool {
|
||||
guard let availableInputs = AVAudioSession.sharedInstance().availableInputs else {return false}
|
||||
for inputDevice in availableInputs {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue