From 3d3e224374116f72dfab5f7a174ccd889fc40ae7 Mon Sep 17 00:00:00 2001 From: penghanyuan Date: Fri, 13 Feb 2026 21:29:43 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=20VoiceRecorder?= =?UTF-8?q?=20=E4=BB=A5=E6=94=AF=E6=8C=81=E4=BD=8E=E7=89=88=E6=9C=AC=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 VoiceRecorder.kt 中的 MediaRecorder 初始化逻辑,支持 API 31 以下的版本。 - 移除不必要的条件判断,简化代码结构。 --- .gitignore | 1 + .../life_echo/feature/voice/VoiceRecorder.kt | 22 +++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 753a5de..f9a52a1 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ dist/ # 本地 ASR 模型缓存(Whisper 每次启动从该目录加载) api/models/ +certs/ diff --git a/app-android/app/src/main/java/com/huaga/life_echo/feature/voice/VoiceRecorder.kt b/app-android/app/src/main/java/com/huaga/life_echo/feature/voice/VoiceRecorder.kt index de5e35b..f486aff 100644 --- a/app-android/app/src/main/java/com/huaga/life_echo/feature/voice/VoiceRecorder.kt +++ b/app-android/app/src/main/java/com/huaga/life_echo/feature/voice/VoiceRecorder.kt @@ -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()