diff --git a/Classes/Swift/Voip/ViewModels/ControlsViewModel.swift b/Classes/Swift/Voip/ViewModels/ControlsViewModel.swift index 1b758fafe..a03943c20 100644 --- a/Classes/Swift/Voip/ViewModels/ControlsViewModel.swift +++ b/Classes/Swift/Voip/ViewModels/ControlsViewModel.swift @@ -30,6 +30,7 @@ class ControlsViewModel { let isMicrophoneMuted = MutableLiveData() let isMuteMicrophoneEnabled = MutableLiveData() let isBluetoothHeadsetSelected = MutableLiveData() + let isBluetoothHeadsetAvailable = MutableLiveData() let nonEarpieceOutputAudioDevice = MutableLiveData() let audioRoutesSelected = MutableLiveData() let audioRoutesEnabled = MutableLiveData() @@ -71,6 +72,9 @@ class ControlsViewModel { self.nonEarpieceOutputAudioDevice.value = audioDevice.type != AudioDeviceType.Microphone // on iOS Earpiece = Microphone self.updateSpeakerState() self.updateBluetoothHeadsetState() + }, + onAudioDevicesListUpdated : { (core: Core) -> Void in + self.isBluetoothHeadsetAvailable.value = !core.audioDevices.filter { [.Bluetooth,.BluetoothA2DP].contains($0.type)}.isEmpty } ) Core.get().addDelegate(delegate: coreDelegate!) diff --git a/Classes/Swift/Voip/Views/Fragments/ControlsView.swift b/Classes/Swift/Voip/Views/Fragments/ControlsView.swift index b091a049c..387acb0a6 100644 --- a/Classes/Swift/Voip/Views/Fragments/ControlsView.swift +++ b/Classes/Swift/Voip/Views/Fragments/ControlsView.swift @@ -67,6 +67,11 @@ class ControlsView: UIStackView { routes.isHidden = !speaker.isHidden } + controlsViewModel.isBluetoothHeadsetAvailable.readCurrentAndObserve { available in + speaker.isHidden = available == true + routes.isHidden = !speaker.isHidden + } + // Video if (showVideo) { let video = CallControlButton(buttonTheme: VoipTheme.call_video, onClickAction: {