diff --git a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt index 338805c..e3b3df2 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt @@ -113,7 +113,7 @@ object AsrHelper : OfflineCmdListener { } // 拼接每次识别会话中的中间结果 - private var currentPartial = "" + private val currentPartial = StringBuilder() /** 当前页面的场景标识,由各 Activity 在 onResume/onPause 中维护 */ var scene: String = "home" @@ -429,23 +429,20 @@ object AsrHelper : OfflineCmdListener { } override fun onStart(taskId: String) { - currentPartial = "" + currentPartial.clear() restartListeningTimeout() Log.d(TAG, "ASR started: $taskId") } override fun onPartialResult(taskId: String, text: String) { - // 滚动更新当前识别中间结果 - currentPartial += text + currentPartial.append(text) restartListeningTimeout() Log.d(TAG, "ASR partial: $text") } override fun onFinalResult(taskId: String, text: String) { - // 将最终结果追加拼接到会话字符串 isMicRunning = false - // 滚动更新当前识别中间结果 - currentPartial += text + currentPartial.append(text) asr?.stopAsrWithMic() Log.d(TAG, "ASR final result: $text") dismissListeningDialog() @@ -590,6 +587,7 @@ object AsrHelper : OfflineCmdListener { fun close() { isClosed = true OfflineCmdServiceHelper.removeOnLineListener(this) + mainHandler.removeCallbacks(listeningTimeoutRunnable) mainHandler.removeCallbacks(networkCheckRunnable) mainHandler.removeCallbacks(asrReconnectRunnable) mainHandler.removeCallbacks(ttsReconnectRunnable) diff --git a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt index 992f3a2..23de9d8 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt @@ -232,6 +232,7 @@ class InspectionResultActivity : } override fun onDestroy() { + imageDecodeExecutor.shutdown() super.onDestroy() binding.iv.setImageDrawable(null) window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingFinishActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingFinishActivity.kt index 0fb8747..58e3180 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingFinishActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingFinishActivity.kt @@ -56,6 +56,7 @@ class SprayingFinishActivity : } override fun onDestroy() { + imageDecodeExecutor.shutdown() super.onDestroy() binding.photo1.setImageDrawable(null) binding.photo2.setImageDrawable(null) diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt index 5867a33..46a3635 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt @@ -152,6 +152,7 @@ class SprayingOCRActivity : } override fun onDestroy() { + imageDecodeExecutor.shutdown() viewModel.cancelUpload() super.onDestroy() binding.content.setImageDrawable(null) diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt index 79bab9f..c825ef0 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt @@ -256,6 +256,7 @@ class SprayingResultActivity : } override fun onDestroy() { + imageDecodeExecutor.shutdown() uiHandler.removeCallbacksAndMessages(null) successDialog?.dismiss() super.onDestroy()