fix potential race condition with previous recorder in method stop
This commit is contained in:
+11
-3
@@ -23,6 +23,7 @@ package com.vitorpamplona.amethyst.ui.actions.uploads
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.media.MediaRecorder
|
import android.media.MediaRecorder
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.util.Log
|
||||||
import androidx.media3.common.MimeTypes
|
import androidx.media3.common.MimeTypes
|
||||||
import com.vitorpamplona.quartz.utils.RandomInstance
|
import com.vitorpamplona.quartz.utils.RandomInstance
|
||||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||||
@@ -53,7 +54,7 @@ class VoiceMessageRecorder {
|
|||||||
MediaRecorder()
|
MediaRecorder()
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun start(
|
fun start(
|
||||||
context: Context,
|
context: Context,
|
||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
) {
|
) {
|
||||||
@@ -88,8 +89,15 @@ class VoiceMessageRecorder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun stop(): RecordingResult? {
|
fun stop(): RecordingResult? {
|
||||||
recorder?.stop()
|
job?.cancel()
|
||||||
|
job = null
|
||||||
|
|
||||||
|
try {
|
||||||
|
recorder?.stop()
|
||||||
|
} catch (e: RuntimeException) {
|
||||||
|
Log.w("VoiceMessageRecorder", "Failed to stop recording... Too short?", e)
|
||||||
|
}
|
||||||
recorder?.reset()
|
recorder?.reset()
|
||||||
recorder = null
|
recorder = null
|
||||||
val currentTime = TimeUtils.now()
|
val currentTime = TimeUtils.now()
|
||||||
|
|||||||
Reference in New Issue
Block a user