refactor: 更新 VoiceRecorder 以支持低版本 API

- 修改 VoiceRecorder.kt 中的 MediaRecorder 初始化逻辑,支持 API 31 以下的版本。
- 移除不必要的条件判断,简化代码结构。
This commit is contained in:
penghanyuan
2026-02-13 21:29:43 +01:00
parent cbd842a647
commit 3d3e224374
2 changed files with 14 additions and 9 deletions

1
.gitignore vendored
View File

@@ -54,3 +54,4 @@ dist/
# 本地 ASR 模型缓存Whisper 每次启动从该目录加载)
api/models/
certs/

View File

@@ -74,27 +74,31 @@ class VoiceRecorder(private val context: Context) {
return try {
val outputDir = context.cacheDir
audioFile = File.createTempFile("audio_${UUID.randomUUID()}", ".m4a", outputDir)
mediaRecorder = MediaRecorder(context).apply {
// MediaRecorder(Context) 需要 API 31+,低版本使用无参构造
mediaRecorder = (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
MediaRecorder(context)
} else {
@Suppress("DEPRECATION")
MediaRecorder()
}).apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
setOutputFile(audioFile?.absolutePath)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
setAudioEncodingBitRate(128000)
setAudioSamplingRate(44100)
}
setAudioEncodingBitRate(128000)
setAudioSamplingRate(44100)
prepare()
start()
}
_isRecording.value = true
_recordingDuration.value = 0
recordingStartTime = System.currentTimeMillis()
// 启动计时器
startDurationTimer()
audioFile
} catch (e: Exception) {
e.printStackTrace()