From 8e07f4a42c5f34d91c59490748b05366b2a656d9 Mon Sep 17 00:00:00 2001 From: BigPickle Date: Wed, 24 Jun 2026 09:41:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B0=86=20TTS=20=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=BB=8E=20Thread.sleep=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=20Handler.postDelayed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 确保悬浮窗先完成渲染,再延时播放语音,避免 Thread.sleep 阻塞主线程导致窗口无法显示。 --- mymessagemanager/build.properties | 4 +-- .../utils/TextToSpeechUtil.java | 29 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/mymessagemanager/build.properties b/mymessagemanager/build.properties index e177cec..0b76e9a 100644 --- a/mymessagemanager/build.properties +++ b/mymessagemanager/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Wed Jun 24 09:28:12 CST 2026 +#Wed Jun 24 09:36:16 CST 2026 stageCount=12 libraryProject= baseVersion=15.12 publishVersion=15.12.11 -buildCount=4 +buildCount=5 baseBetaVersion=15.12.12 diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TextToSpeechUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TextToSpeechUtil.java index 3ef3272..783d534 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TextToSpeechUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TextToSpeechUtil.java @@ -65,24 +65,23 @@ public class TextToSpeechUtil { } } - initWindow(); // 已同步尺寸和位置 + initWindow(); // 先弹出悬浮窗口 int nDelay = listTTSSpeakTextBean.get(0).mnDelay; - try { - Thread.sleep(nDelay); - } catch (InterruptedException e) { - LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); - } - - for (int speakPosition = 0; speakPosition < listTTSSpeakTextBean.size() && !isExist; speakPosition++) { - String szSpeakContent = listTTSSpeakTextBean.get(speakPosition).mszSpeakContent; - isExist = (listTTSSpeakTextBean.size() - 2 < speakPosition); - if (speakPosition == 0) { - mTextToSpeech.speak(szSpeakContent, TextToSpeech.QUEUE_FLUSH, null, UNIQUE_ID); - } else { - mTextToSpeech.speak(szSpeakContent, TextToSpeech.QUEUE_ADD, null, UNIQUE_ID); + new android.os.Handler(mContext.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + for (int speakPosition = 0; speakPosition < listTTSSpeakTextBean.size() && !isExist; speakPosition++) { + String szSpeakContent = listTTSSpeakTextBean.get(speakPosition).mszSpeakContent; + isExist = (listTTSSpeakTextBean.size() - 2 < speakPosition); + if (speakPosition == 0) { + mTextToSpeech.speak(szSpeakContent, TextToSpeech.QUEUE_FLUSH, null, UNIQUE_ID); + } else { + mTextToSpeech.speak(szSpeakContent, TextToSpeech.QUEUE_ADD, null, UNIQUE_ID); + } + } } - } + }, nDelay); } } }