diff --git a/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt index 604f12bd8..e66a20450 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt @@ -28,6 +28,7 @@ import androidx.lifecycle.ViewModelProvider import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.activities.GenericFragment +import org.linphone.activities.main.MainActivity import org.linphone.activities.main.conference.viewmodels.ConferenceWaitingRoomViewModel import org.linphone.activities.navigateToDialer import org.linphone.compatibility.Compatibility @@ -110,6 +111,14 @@ class ConferenceWaitingRoomFragment : GenericFragment + (activity as MainActivity).showSnackBar(message) + } + } + if (Version.sdkAboveOrEqual(Version.API23_MARSHMALLOW_60)) { checkPermissions() } diff --git a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt index 7f6dc2078..9547c6d22 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt @@ -21,16 +21,18 @@ package org.linphone.activities.main.conference.viewmodels import android.Manifest import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R +import org.linphone.activities.main.viewmodels.MessageNotifierViewModel import org.linphone.activities.voip.ConferenceDisplayMode import org.linphone.core.* import org.linphone.core.tools.Log import org.linphone.utils.AudioRouteUtils import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils import org.linphone.utils.PermissionHelper -class ConferenceWaitingRoomViewModel : ViewModel() { +class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() { val subject = MutableLiveData() val isMicrophoneMuted = MutableLiveData() @@ -53,6 +55,8 @@ class ConferenceWaitingRoomViewModel : ViewModel() { val isSwitchCameraAvailable = MutableLiveData() + val isLowBandwidth = MutableLiveData() + val joinInProgress = MutableLiveData() val askPermissionEvent: MutableLiveData> by lazy { @@ -105,6 +109,18 @@ class ConferenceWaitingRoomViewModel : ViewModel() { Log.i("[Conference Waiting Room] Video will be ${if (callParams.isVideoEnabled) "enabled" else "disabled"}") updateVideoState() + isLowBandwidth.value = false + if (LinphoneUtils.checkIfNetworkHasLowBandwidth(coreContext.context)) { + Log.w("[Conference Waiting Room] Enabling low bandwidth mode, forcing audio only layout!") + callParams.isLowBandwidthEnabled = true + callParams.isVideoEnabled = false + callParams.videoDirection = MediaDirection.Inactive + isLowBandwidth.value = true + + updateVideoState() + onMessageToNotifyEvent.value = Event(R.string.conference_low_bandwidth) + } + layoutMenuSelected.value = false updateLayout() diff --git a/app/src/main/res/layout/conference_waiting_room_fragment.xml b/app/src/main/res/layout/conference_waiting_room_fragment.xml index 76274b36a..3925212d5 100644 --- a/app/src/main/res/layout/conference_waiting_room_fragment.xml +++ b/app/src/main/res/layout/conference_waiting_room_fragment.xml @@ -267,7 +267,7 @@ android:layout_marginStart="5dp" android:background="@drawable/button_background_reverse" android:contentDescription="@{viewModel.isVideoEnabled ? @string/content_description_disable_video : @string/content_description_enable_video}" - android:enabled="@{viewModel.isVideoAvailable}" + android:enabled="@{viewModel.isVideoAvailable && !viewModel.isLowBandwidth}" android:onClick="@{() -> viewModel.toggleVideo()}" android:padding="5dp" android:selected="@{viewModel.isVideoEnabled}" @@ -282,6 +282,7 @@ android:layout_marginEnd="20dp" android:background="@drawable/button_toggle_background_reverse" android:contentDescription="@string/content_description_toggle_layout_menu" + android:enabled="@{!viewModel.isLowBandwidth}" android:onClick="@{() -> viewModel.toggleLayoutMenu()}" android:padding="10dp" android:selected="@{viewModel.layoutMenuSelected}" diff --git a/app/src/main/res/layout/side_menu_fragment.xml b/app/src/main/res/layout/side_menu_fragment.xml index d4e4291a9..4f428eabb 100644 --- a/app/src/main/res/layout/side_menu_fragment.xml +++ b/app/src/main/res/layout/side_menu_fragment.xml @@ -56,15 +56,12 @@ android:background="@drawable/generated_avatar_bg" android:src="@drawable/icon_single_contact_avatar" android:contentDescription="@string/content_description_change_own_picture" - glidePath="@{viewModel.defaultAccountAvatar}" /> + glideAvatar="@{viewModel.defaultAccountAvatar}" /> Mode audio uniquement Il y a trop de participants pour la disposition en mosaïque, passage à l\'intervenant actif (en pause) + Prendre une capture de la vidéo reçue + Faible bande passante détectée, vidéo désactivée \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5fc816116..9e2a3c1de 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -289,6 +289,7 @@ You are currently alone in this conference You have been invited to a conference Conference invitation + Low bandwidth detected, disabling video Incoming Call