Fixed speaker button state while in conference + remove deprecated APIs regarding conference

This commit is contained in:
Sylvain Berfini 2021-05-24 14:45:54 +02:00
parent 30057429a4
commit 54ae2f8d9c
2 changed files with 22 additions and 14 deletions

View file

@ -255,8 +255,7 @@ class ControlsViewModel : ViewModel() {
fun toggleSpeaker() {
somethingClickedEvent.value = Event(true)
val audioDevice = coreContext.core.outputAudioDevice
if (audioDevice?.type == AudioDevice.Type.Speaker) {
if (AudioRouteUtils.isSpeakerAudioRouteCurrentlyUsed()) {
forceEarpieceAudioRoute()
} else {
forceSpeakerAudioRoute()
@ -272,7 +271,7 @@ class ControlsViewModel : ViewModel() {
val core = coreContext.core
when {
core.currentCall != null -> core.currentCall?.terminate()
core.isInConference -> core.terminateConference()
core.conference?.isIn == true -> core.terminateConference()
else -> core.terminateAllCalls()
}
}
@ -287,7 +286,7 @@ class ControlsViewModel : ViewModel() {
val currentCall = core.currentCall
val conference = core.conference
if (conference != null && core.isInConference) {
if (conference != null && conference.isIn) {
val params = core.createConferenceParams()
val videoEnabled = conference.currentParams.isVideoEnabled
params.isVideoEnabled = !videoEnabled
@ -399,7 +398,7 @@ class ControlsViewModel : ViewModel() {
fun updateMuteMicState() {
isMicrophoneMuted.value = !PermissionHelper.get().hasRecordAudioPermission() || !coreContext.core.micEnabled()
isMuteMicrophoneEnabled.value = coreContext.core.currentCall != null || coreContext.core.isInConference
isMuteMicrophoneEnabled.value = coreContext.core.currentCall != null || coreContext.core.conference?.isIn == true
}
private fun updateAudioRelated() {
@ -413,7 +412,7 @@ class ControlsViewModel : ViewModel() {
updateVideoAvailable()
updateVideoEnabled()
isPauseEnabled.value = currentCall != null && !currentCall.mediaInProgress()
isMuteMicrophoneEnabled.value = currentCall != null || coreContext.core.isInConference
isMuteMicrophoneEnabled.value = currentCall != null || coreContext.core.conference?.isIn == true
updateConferenceState()
// Check periodically until mediaInProgress is false
@ -426,8 +425,7 @@ class ControlsViewModel : ViewModel() {
}
private fun updateSpeakerState() {
val audioDevice = coreContext.core.outputAudioDevice
isSpeakerSelected.value = audioDevice?.type == AudioDevice.Type.Speaker
isSpeakerSelected.value = AudioRouteUtils.isSpeakerAudioRouteCurrentlyUsed()
}
private fun updateAudioRoutesState() {
@ -439,9 +437,7 @@ class ControlsViewModel : ViewModel() {
}
private fun updateBluetoothHeadsetState() {
if (coreContext.core.callsNb == 0) return
val audioDevice = (coreContext.core.currentCall ?: coreContext.core.calls[0]).outputAudioDevice
isBluetoothHeadsetSelected.value = audioDevice?.type == AudioDevice.Type.Bluetooth
isBluetoothHeadsetSelected.value = AudioRouteUtils.isBluetoothAudioRouteCurrentlyUsed()
}
private fun updateVideoAvailable() {
@ -449,7 +445,7 @@ class ControlsViewModel : ViewModel() {
val currentCall = core.currentCall
isVideoAvailable.value = (core.videoCaptureEnabled() || core.videoPreviewEnabled()) &&
((currentCall != null && !currentCall.mediaInProgress()) ||
(core.conference != null && core.isInConference))
core.conference?.isIn == true)
}
private fun updateVideoEnabled() {
@ -459,6 +455,6 @@ class ControlsViewModel : ViewModel() {
private fun updateConferenceState() {
val core = coreContext.core
isConferencingAvailable.value = core.callsNb > max(1, core.conferenceSize) && !core.soundResourcesLocked()
isConferencingAvailable.value = core.callsNb > max(1, core.conference?.participantCount ?: 0) && !core.soundResourcesLocked()
}
}

View file

@ -98,6 +98,18 @@ class AudioRouteUtils {
Log.e("[Audio Route Helper] Couldn't find headset audio device")
}
fun isSpeakerAudioRouteCurrentlyUsed(call: Call? = null): Boolean {
if (coreContext.core.callsNb == 0) {
Log.w("[Audio Route Helper] No call found, so speaker audio route isn't used")
return false
}
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
val audioDevice = currentCall.outputAudioDevice
Log.i("[Audio Route Helper] Audio device currently in use is [${audioDevice?.deviceName}] with type (${audioDevice?.type})")
return audioDevice?.type == AudioDevice.Type.Speaker
}
fun isBluetoothAudioRouteCurrentlyUsed(call: Call? = null): Boolean {
if (coreContext.core.callsNb == 0) {
Log.w("[Audio Route Helper] No call found, so bluetooth audio route isn't used")
@ -106,7 +118,7 @@ class AudioRouteUtils {
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
val audioDevice = currentCall.outputAudioDevice
Log.i("[Audio Route Helper] Audio device currently in use is [${audioDevice?.deviceName}]")
Log.i("[Audio Route Helper] Audio device currently in use is [${audioDevice?.deviceName}] with type (${audioDevice?.type})")
return audioDevice?.type == AudioDevice.Type.Bluetooth
}