diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AudioRecorderManager.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AudioRecorderManager.kt index 4ee14b23..38193669 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AudioRecorderManager.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AudioRecorderManager.kt @@ -185,6 +185,7 @@ class AudioRecorderManager { @Volatile var elapsedMs: Int = 0; private set var pausedElapsedMs: Int = 0; private set private var playThread: Thread? = null + @Volatile private var stopped = false fun playVoiceFile(filePath: String, onProgress: ((Float) -> Unit)? = null, onComplete: () -> Unit = {}) { playFromPosition(filePath, 0, onProgress, onComplete) @@ -245,19 +246,22 @@ class AudioRecorderManager { } catch (e: Exception) { LogManager.addLog("ERROR", "AudioPlayer", "play error: ${e.message}") } - playing = false; isPaused = false - onComplete() + if (!stopped) { + playing = false; isPaused = false; onComplete() + } }.apply { start() } } fun pausePlayback() { pausedElapsedMs = elapsedMs - isPaused = true; playing = false + stopped = true; isPaused = true; playing = false playThread?.join(500); playThread = null + stopped = false } fun stopPlayback() { - playing = false; isPaused = false; pausedElapsedMs = 0 + stopped = true; playing = false; isPaused = false; pausedElapsedMs = 0 playThread?.join(500); playThread = null + stopped = false } }