From 913e7cdb02c9a3ac900545c2d46768f013dd0b48 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 22 Sep 2023 17:33:27 +0200 Subject: [PATCH] Fixed call duration timer when leaving & resuming active call fragment --- app/src/main/java/org/linphone/core/CoreContext.kt | 2 +- .../linphone/telecom/TelecomCallControlCallback.kt | 2 +- .../linphone/ui/call/fragment/ActiveCallFragment.kt | 3 +++ .../ui/call/viewmodel/CurrentCallViewModel.kt | 11 +++++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 8abcf073b..5aefda648 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -325,7 +325,7 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C @WorkerThread fun terminateCall(call: Call) { - Log.i("$TAG Terminating call $call") + Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") call.terminate() } diff --git a/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt b/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt index 7b6e67318..30c520187 100644 --- a/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt +++ b/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt @@ -218,7 +218,7 @@ class TelecomCallControlCallback constructor( override suspend fun onDisconnect(disconnectCause: DisconnectCause): Boolean { Log.i("$TAG We're asked to terminate the call with reason [$disconnectCause]") coreContext.postOnCoreThread { - Log.i("$TAG Terminating call") + Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") call.terminate() // TODO: use cause } return true diff --git a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt index 1aba0b716..74892026b 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt @@ -219,6 +219,9 @@ class ActiveCallFragment : GenericCallFragment() { core.nativeVideoWindowId = binding.remoteVideoSurface coreContext.core.nativePreviewWindowId = binding.localPreviewVideoSurface binding.localPreviewVideoSurface.setOnTouchListener(previewTouchListener) + + // Need to be done manually + callViewModel.updateCallDuration() } } diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index cfef191e9..6ce25818e 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -150,7 +150,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { if (currentCall != null) { call = currentCall - Log.i("$TAG Found call [$call]") + Log.i("$TAG Found call [${call.remoteAddress.asStringUriOnly()}]") configureCall(call) } else { Log.e("$TAG Failed to find call!") @@ -185,7 +185,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { fun hangUp() { coreContext.postOnCoreThread { if (::call.isInitialized) { - Log.i("$TAG Terminating call [$call]") + Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") call.terminate() } } @@ -421,6 +421,13 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { callDuration.postValue(call.duration) } + @WorkerThread + fun updateCallDuration() { + if (::call.isInitialized) { + callDuration.postValue(call.duration) + } + } + private fun updateOutputAudioDevice(audioDevice: AudioDevice?) { isSpeakerEnabled.postValue(audioDevice?.type == AudioDevice.Type.Speaker) isHeadsetEnabled.postValue(