Fixed speaker button state while in conference + remove deprecated APIs regarding conference
This commit is contained in:
parent
30057429a4
commit
54ae2f8d9c
2 changed files with 22 additions and 14 deletions
|
@ -255,8 +255,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
|
|
||||||
fun toggleSpeaker() {
|
fun toggleSpeaker() {
|
||||||
somethingClickedEvent.value = Event(true)
|
somethingClickedEvent.value = Event(true)
|
||||||
val audioDevice = coreContext.core.outputAudioDevice
|
if (AudioRouteUtils.isSpeakerAudioRouteCurrentlyUsed()) {
|
||||||
if (audioDevice?.type == AudioDevice.Type.Speaker) {
|
|
||||||
forceEarpieceAudioRoute()
|
forceEarpieceAudioRoute()
|
||||||
} else {
|
} else {
|
||||||
forceSpeakerAudioRoute()
|
forceSpeakerAudioRoute()
|
||||||
|
@ -272,7 +271,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
val core = coreContext.core
|
val core = coreContext.core
|
||||||
when {
|
when {
|
||||||
core.currentCall != null -> core.currentCall?.terminate()
|
core.currentCall != null -> core.currentCall?.terminate()
|
||||||
core.isInConference -> core.terminateConference()
|
core.conference?.isIn == true -> core.terminateConference()
|
||||||
else -> core.terminateAllCalls()
|
else -> core.terminateAllCalls()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -287,7 +286,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
val currentCall = core.currentCall
|
val currentCall = core.currentCall
|
||||||
val conference = core.conference
|
val conference = core.conference
|
||||||
|
|
||||||
if (conference != null && core.isInConference) {
|
if (conference != null && conference.isIn) {
|
||||||
val params = core.createConferenceParams()
|
val params = core.createConferenceParams()
|
||||||
val videoEnabled = conference.currentParams.isVideoEnabled
|
val videoEnabled = conference.currentParams.isVideoEnabled
|
||||||
params.isVideoEnabled = !videoEnabled
|
params.isVideoEnabled = !videoEnabled
|
||||||
|
@ -399,7 +398,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
|
|
||||||
fun updateMuteMicState() {
|
fun updateMuteMicState() {
|
||||||
isMicrophoneMuted.value = !PermissionHelper.get().hasRecordAudioPermission() || !coreContext.core.micEnabled()
|
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() {
|
private fun updateAudioRelated() {
|
||||||
|
@ -413,7 +412,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
updateVideoAvailable()
|
updateVideoAvailable()
|
||||||
updateVideoEnabled()
|
updateVideoEnabled()
|
||||||
isPauseEnabled.value = currentCall != null && !currentCall.mediaInProgress()
|
isPauseEnabled.value = currentCall != null && !currentCall.mediaInProgress()
|
||||||
isMuteMicrophoneEnabled.value = currentCall != null || coreContext.core.isInConference
|
isMuteMicrophoneEnabled.value = currentCall != null || coreContext.core.conference?.isIn == true
|
||||||
updateConferenceState()
|
updateConferenceState()
|
||||||
|
|
||||||
// Check periodically until mediaInProgress is false
|
// Check periodically until mediaInProgress is false
|
||||||
|
@ -426,8 +425,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateSpeakerState() {
|
private fun updateSpeakerState() {
|
||||||
val audioDevice = coreContext.core.outputAudioDevice
|
isSpeakerSelected.value = AudioRouteUtils.isSpeakerAudioRouteCurrentlyUsed()
|
||||||
isSpeakerSelected.value = audioDevice?.type == AudioDevice.Type.Speaker
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateAudioRoutesState() {
|
private fun updateAudioRoutesState() {
|
||||||
|
@ -439,9 +437,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateBluetoothHeadsetState() {
|
private fun updateBluetoothHeadsetState() {
|
||||||
if (coreContext.core.callsNb == 0) return
|
isBluetoothHeadsetSelected.value = AudioRouteUtils.isBluetoothAudioRouteCurrentlyUsed()
|
||||||
val audioDevice = (coreContext.core.currentCall ?: coreContext.core.calls[0]).outputAudioDevice
|
|
||||||
isBluetoothHeadsetSelected.value = audioDevice?.type == AudioDevice.Type.Bluetooth
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateVideoAvailable() {
|
private fun updateVideoAvailable() {
|
||||||
|
@ -449,7 +445,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
val currentCall = core.currentCall
|
val currentCall = core.currentCall
|
||||||
isVideoAvailable.value = (core.videoCaptureEnabled() || core.videoPreviewEnabled()) &&
|
isVideoAvailable.value = (core.videoCaptureEnabled() || core.videoPreviewEnabled()) &&
|
||||||
((currentCall != null && !currentCall.mediaInProgress()) ||
|
((currentCall != null && !currentCall.mediaInProgress()) ||
|
||||||
(core.conference != null && core.isInConference))
|
core.conference?.isIn == true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateVideoEnabled() {
|
private fun updateVideoEnabled() {
|
||||||
|
@ -459,6 +455,6 @@ class ControlsViewModel : ViewModel() {
|
||||||
|
|
||||||
private fun updateConferenceState() {
|
private fun updateConferenceState() {
|
||||||
val core = coreContext.core
|
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,18 @@ class AudioRouteUtils {
|
||||||
Log.e("[Audio Route Helper] Couldn't find headset audio device")
|
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 {
|
fun isBluetoothAudioRouteCurrentlyUsed(call: Call? = null): Boolean {
|
||||||
if (coreContext.core.callsNb == 0) {
|
if (coreContext.core.callsNb == 0) {
|
||||||
Log.w("[Audio Route Helper] No call found, so bluetooth audio route isn't used")
|
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 currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
||||||
|
|
||||||
val audioDevice = currentCall.outputAudioDevice
|
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
|
return audioDevice?.type == AudioDevice.Type.Bluetooth
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue