|
|
private fun stopAudioRecording() {
Thread {
try {
audioRecordRunning = false
Log.d(tag, "主程序:将要停止录制")
audioRecord.isRecording = false
// Thread.sleep(1000)
audioRecord.stopRecord() // !
} catch (e: Exception){
Log.e(tag, "Failed to stop audio recording", e)
}
// 直接调用静态方法
//VoskHelper.sendFile();
}.start()
//audioRecord.isRecording = false
// recordingSession?.let {
// FFmpegKit.cancel(it.sessionId)
// }
}
这个 `Thread` 是**新添加的线程**,不是主线程。
具体分析:
1. **新建线程**:代码中使用 `Thread(object : Runnable { ... })` 明确创建了一个新的线程实例。
2. **独立执行**:这个线程独立于主线程(UI线程)运行,用于执行录音相关的后台操作。
3. **目的**:创建新线程是为了避免在主线程中执行耗时的录音操作,防止阻塞UI界面。
4. **对比其他地方**:在 [MainActivity.kt](file://C:\s_c\Android\vosk_renew_slim\Versions\MainActivity.kt) 中还有其他类似的用法,比如在 [stopAudioRecording](file://C:\s_c\Android\vosk_renew_slim\Versions\MainActivity.kt#L169-L187) 方法中也创建了新的线程来执行停止录音的操作。
所以这是一个典型的Android开发模式:在后台线程执行耗时操作,避免影响主线程的响应性。
|
|