gpt4 book ai didi

android - 如何在 Android 上等待 TextToSpeech 初始化

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:13 30 4
gpt4 key购买 nike

我正在编写一个与用户对话的 Activity ,我真的很想阻止 TextToSpeech 初始化 - 否则超时。如何让我的线程等待?

我试过:

 while (! mIsTtsReady || i>limit) try { Thread.sleep(100); i++; ... };

连同:

 @Override
public void OnInit() { mIsTtsReady = true; } // TextToSpeech.OnInitListener

但是 OnInit() 永远不会运行。似乎 OnInit 在我的线程中执行(通过消息发送到我的 Activity Looper?),这是一个紧密的 sleep() 循环。

将我的大部分代码(“初始化之后”的东西)放入 OnInit 本身似乎是错误的。将它移动到一个 Runnable 中,然后启动()它,并在该 runnable 工作中像上面那样休眠。但现在我的代码在一个新线程中,需要与 UI 等显式同步,这一切很快就会变得一团糟。

什么是正确的方法 - 或者至少是有效的 :) - 来做到这一点?

谢谢!

最佳答案

您需要初始化 TTS 系统,例如 Activity 的 onCreate() 方法,以便您稍后可以在用户(例如单击一个按钮。

参见例如https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/OneTweetActivity.java#L62其中 setupspeak() 被调用,随后 speak() ( https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/OneTweetActivity.java#L344 ) 在用户单击“说话”按钮时被调用。

关于android - 如何在 Android 上等待 TextToSpeech 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141567/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com