From 64e3bbb0d121139bd324c4f2a8ed8511e09723d5 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 16 Dec 2022 09:19:55 -0500 Subject: [PATCH] Stop playback when starting to record --- .../ui/main/MainScreenViewModel.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/examples/whisper.android/app/src/main/java/com/whispercppdemo/ui/main/MainScreenViewModel.kt b/examples/whisper.android/app/src/main/java/com/whispercppdemo/ui/main/MainScreenViewModel.kt index 731a671..8664440 100644 --- a/examples/whisper.android/app/src/main/java/com/whispercppdemo/ui/main/MainScreenViewModel.kt +++ b/examples/whisper.android/app/src/main/java/com/whispercppdemo/ui/main/MainScreenViewModel.kt @@ -85,11 +85,20 @@ class MainScreenViewModel(private val application: Application) : ViewModel() { } private suspend fun readAudioSamples(file: File): FloatArray = withContext(Dispatchers.IO) { + stopPlayback() + startPlayback(file) + return@withContext decodeWaveFile(file) + } + + private suspend fun stopPlayback() = withContext(Dispatchers.Main) { mediaPlayer?.stop() mediaPlayer?.release() + mediaPlayer = null + } + + private suspend fun startPlayback(file: File) = withContext(Dispatchers.Main) { mediaPlayer = MediaPlayer.create(application, file.absolutePath.toUri()) mediaPlayer?.start() - return@withContext decodeWaveFile(file) } private suspend fun transcribeAudio(file: File) { @@ -120,6 +129,7 @@ class MainScreenViewModel(private val application: Application) : ViewModel() { isRecording = false recordedFile?.let { transcribeAudio(it) } } else { + stopPlayback() val file = getTempFileForRecording() recorder.startRecording(file) { e -> viewModelScope.launch { @@ -147,11 +157,8 @@ class MainScreenViewModel(private val application: Application) : ViewModel() { runBlocking { whisperContext?.release() whisperContext = null + stopPlayback() } - - mediaPlayer?.stop() - mediaPlayer?.release() - mediaPlayer = null } companion object {