refactor: 更新 VoiceRecorder 以支持低版本 API
- 修改 VoiceRecorder.kt 中的 MediaRecorder 初始化逻辑,支持 API 31 以下的版本。 - 移除不必要的条件判断,简化代码结构。
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -54,3 +54,4 @@ dist/
|
||||
# 本地 ASR 模型缓存(Whisper 每次启动从该目录加载)
|
||||
api/models/
|
||||
|
||||
certs/
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user