From c8a56c795bab10c3ba79f0350493c6f1de1bf86b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 1 Jul 2021 14:28:11 +0200 Subject: [PATCH] Hide video window when recording player has ended --- .../recordings/adapters/RecordingsListAdapter.kt | 6 ------ .../main/recordings/data/RecordingData.kt | 10 +++++++++- .../main/recordings/fragments/RecordingsFragment.kt | 6 ------ .../recordings/viewmodels/RecordingsViewModel.kt | 13 ++++++++++++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/recordings/adapters/RecordingsListAdapter.kt b/app/src/main/java/org/linphone/activities/main/recordings/adapters/RecordingsListAdapter.kt index f108676bf..43b2c48ad 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/adapters/RecordingsListAdapter.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/adapters/RecordingsListAdapter.kt @@ -26,7 +26,6 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.MutableLiveData import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import org.linphone.R @@ -41,9 +40,6 @@ class RecordingsListAdapter( selectionVM: ListTopBarViewModel, private val viewLifecycleOwner: LifecycleOwner ) : SelectionListAdapter(selectionVM, RecordingDiffCallback()), HeaderAdapter { - val isVideoRecordingPlayingEvent: MutableLiveData> by lazy { - MutableLiveData>() - } private lateinit var videoSurface: TextureView @@ -85,12 +81,10 @@ class RecordingsListAdapter( setPlayListener { if (recording.isPlaying.value == true) { recording.pause() - isVideoRecordingPlayingEvent.value = Event(false) } else { recording.play() if (recording.isVideoAvailable()) { recording.setTextureView(videoSurface) - isVideoRecordingPlayingEvent.value = Event(true) } } } diff --git a/app/src/main/java/org/linphone/activities/main/recordings/data/RecordingData.kt b/app/src/main/java/org/linphone/activities/main/recordings/data/RecordingData.kt index b3d51abce..d9093af29 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/data/RecordingData.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/data/RecordingData.kt @@ -35,7 +35,7 @@ import org.linphone.core.PlayerListener import org.linphone.core.tools.Log import org.linphone.utils.LinphoneUtils -class RecordingData(val path: String) : Comparable { +class RecordingData(val path: String, private val recordingListener: RecordingListener) : Comparable { companion object { val RECORD_PATTERN: Pattern = Pattern.compile(".*/(.*)_(\\d{2}-\\d{2}-\\d{4}-\\d{2}-\\d{2}-\\d{2})\\..*") @@ -57,6 +57,7 @@ class RecordingData(val path: String) : Comparable { private val listener = PlayerListener { Log.i("[Recording] End of file reached") stop() + recordingListener.onPlayingEnded() } private val textureViewListener = object : TextureView.SurfaceTextureListener { @@ -118,6 +119,8 @@ class RecordingData(val path: String) : Comparable { player.open(path) player.seek(0) } + recordingListener.onPlayingStarted(isVideoAvailable()) + player.start() isPlaying.value = true @@ -202,4 +205,9 @@ class RecordingData(val path: String) : Comparable { private fun isClosed(): Boolean { return player.state == Player.State.Closed } + + interface RecordingListener { + fun onPlayingStarted(videoAvailable: Boolean) + fun onPlayingEnded() + } } diff --git a/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt b/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt index 1b4221c79..2e31f2791 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt @@ -98,12 +98,6 @@ class RecordingsFragment : MasterFragment - viewModel.isVideoVisible.value = value - } - }) - adapter.setVideoTextureView(binding.recordingVideoSurface) } diff --git a/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingsViewModel.kt index ff483fe2f..fbbc44210 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingsViewModel.kt @@ -31,6 +31,16 @@ class RecordingsViewModel : ViewModel() { val isVideoVisible = MutableLiveData() + private val recordingListener = object : RecordingData.RecordingListener { + override fun onPlayingStarted(videoAvailable: Boolean) { + isVideoVisible.value = videoAvailable + } + + override fun onPlayingEnded() { + isVideoVisible.value = false + } + } + init { getRecordings() isVideoVisible.value = false @@ -57,7 +67,8 @@ class RecordingsViewModel : ViewModel() { if (RecordingData.RECORD_PATTERN.matcher(f.path).matches()) { list.add( RecordingData( - f.path + f.path, + recordingListener ) ) Log.i("[Recordings] Found record ${f.path}")