From 86d9e25f174bbb8328bb7599720d27c4ee80963a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 13 Sep 2023 15:53:43 +0200 Subject: [PATCH] Differentiate between WiFi and cellular signals in alerts --- .../java/org/linphone/ui/voip/VoipActivity.kt | 19 ++++++++- .../ui/voip/viewmodel/CallsViewModel.kt | 42 +++++++++++++++++-- .../main/res/drawable/cell_signal_full.xml | 9 ++++ app/src/main/res/drawable/cell_signal_low.xml | 9 ++++ app/src/main/res/values/strings.xml | 4 +- 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/cell_signal_full.xml create mode 100644 app/src/main/res/drawable/cell_signal_low.xml diff --git a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt index b0e752f9a..fcdcdc4e1 100644 --- a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt +++ b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt @@ -150,7 +150,7 @@ class VoipActivity : AppCompatActivity() { } } - callsViewModel.showLowSignalEvent.observe(this) { + callsViewModel.showLowWifiSignalEvent.observe(this) { it.consume { show -> if (show) { showRedToast( @@ -167,6 +167,23 @@ class VoipActivity : AppCompatActivity() { } } + callsViewModel.showLowCellularSignalEvent.observe(this) { + it.consume { show -> + if (show) { + showRedToast( + getString(R.string.toast_alert_low_cellular_signal), + R.drawable.cell_signal_low + ) + } else { + hideRedToast() + showGreenToast( + getString(R.string.toast_alert_low_cellular_signal_cleared), + R.drawable.cell_signal_full + ) + } + } + } + sharedViewModel.toggleFullScreenEvent.observe(this) { it.consume { hide -> hideUI(hide) diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt index 85c87c99d..3ffcd4074 100644 --- a/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt @@ -35,6 +35,10 @@ import org.linphone.utils.Event class CallsViewModel @UiThread constructor() : ViewModel() { companion object { private const val TAG = "[Calls ViewModel]" + + private const val ALERT_SIGNAL_TYPE_KEY = "signal-type" + private const val ALERT_SIGNAL_TYPE_WIFI = "wifi" + private const val ALERT_SIGNAL_TYPE_CELLULAR = "mobile" } val goToActiveCallEvent = MutableLiveData>() @@ -45,7 +49,9 @@ class CallsViewModel @UiThread constructor() : ViewModel() { val noMoreCallEvent = MutableLiveData>() - val showLowSignalEvent = MutableLiveData>() + val showLowWifiSignalEvent = MutableLiveData>() + + val showLowCellularSignalEvent = MutableLiveData>() private val alertListener = object : AlertListenerStub() { @WorkerThread @@ -55,7 +61,22 @@ class CallsViewModel @UiThread constructor() : ViewModel() { alert.removeListener(this) if (alert.type == Alert.Type.QoSLowSignal) { - showLowSignalEvent.postValue(Event(false)) + val signalType = alert.informations?.getString(ALERT_SIGNAL_TYPE_KEY) + when (signalType) { + ALERT_SIGNAL_TYPE_WIFI -> { + Log.i("$TAG Wi-Fi signal no longer low") + showLowWifiSignalEvent.postValue(Event(false)) + } + ALERT_SIGNAL_TYPE_CELLULAR -> { + Log.i("$TAG Cellular signal no longer low") + showLowCellularSignalEvent.postValue(Event(false)) + } + else -> { + Log.w( + "$TAG Unexpected type of signal [$signalType] found in alert information" + ) + } + } } } } @@ -96,7 +117,22 @@ class CallsViewModel @UiThread constructor() : ViewModel() { alert.addListener(alertListener) if (alert.type == Alert.Type.QoSLowSignal) { - showLowSignalEvent.postValue(Event(true)) + val signalType = alert.informations?.getString(ALERT_SIGNAL_TYPE_KEY) + when (signalType) { + ALERT_SIGNAL_TYPE_WIFI -> { + Log.i("$TAG Triggered low signal alert is for Wi-Fi") + showLowWifiSignalEvent.postValue(Event(true)) + } + ALERT_SIGNAL_TYPE_CELLULAR -> { + Log.i("$TAG Triggered low signal alert is for cellular") + showLowCellularSignalEvent.postValue(Event(true)) + } + else -> { + Log.w( + "$TAG Unexpected type of signal [$signalType] found in alert information" + ) + } + } } } } diff --git a/app/src/main/res/drawable/cell_signal_full.xml b/app/src/main/res/drawable/cell_signal_full.xml new file mode 100644 index 000000000..5285c05cc --- /dev/null +++ b/app/src/main/res/drawable/cell_signal_full.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/cell_signal_low.xml b/app/src/main/res/drawable/cell_signal_low.xml new file mode 100644 index 000000000..87f665af4 --- /dev/null +++ b/app/src/main/res/drawable/cell_signal_low.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 708040bc6..214bf36fa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -79,7 +79,9 @@ Number copied into clipboard History has been deleted Low Wi-Fi signal! - Wi-Fi signal no longer low + Wi-Fi signal is no longer low + Low cellular signal! + Cellular signal is no longer low This call can be trusted Choose your country