Files
forkmessager/client-mobile/core/utils/VoiceRecorder.kt
2026-04-30 10:33:15 +03:00

49 lines
1.5 KiB
Kotlin

package core.utils
import android.content.Context
import android.media.MediaRecorder
import android.os.Build
import java.io.File
import java.io.FileOutputStream
class VoiceRecorder(private val context: Context) {
private var recorder: MediaRecorder? = null
fun startRecording(outputFile: File) {
try {
android.util.Log.d("VoiceRecorder", "startRecording to ${outputFile.absolutePath}")
recorder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
MediaRecorder(context)
} else {
MediaRecorder()
}.apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
setOutputFile(FileOutputStream(outputFile).fd)
prepare()
start()
}
} catch (e: Exception) {
android.util.Log.e("VoiceRecorder", "Failed to start recording", e)
recorder?.release()
recorder = null
}
}
fun stopRecording() {
try {
android.util.Log.d("VoiceRecorder", "stopRecording")
recorder?.let {
it.stop()
it.release()
android.util.Log.d("VoiceRecorder", "stopRecording success")
}
} catch (e: Exception) {
android.util.Log.e("VoiceRecorder", "Failed to stop recording", e)
} finally {
recorder = null
}
}
}