Android SpeechRecognizer 只能在应用程序的主线程中使用

发布于 2024-11-06 08:33:34 字数 386 浏览 0 评论 0原文

我正在尝试将一些 Android 语音 API 集成到我的基于 AndEngine 的游戏中。

我将代码放在 BaseGame 活动中 - 但是在运行时出现此错误:

05-06 23:51:28.955: ERROR/AndroidRuntime(553): java.lang.RuntimeException: SpeechRecognizer 应该仅从应用程序的主线程使用

如何做我访问应用程序主线程?我怎样才能确保我的语音代码在其中运行。

设置如下:

主类 - BaseGameActivity SpeechClass

主类实例化一个新的 SpeechClass + 调用其方法 - 然后我收到上述错误。

请告诉我如何正确地做到这一点。

I am trying to integrate some of Androids Speech APIS in my AndEngine based game.

I placed my code within the BaseGame activity - however this error appears at runtime:

05-06 23:51:28.955: ERROR/AndroidRuntime(553): java.lang.RuntimeException: SpeechRecognizer should be used only from the application's main thread

How do I access the applications main thread? And how can I ensure my Speech code runs in it.

The setup is as follows:

Main Class - BaseGameActivity
SpeechClass

Main Class instantiates a new SpeechClass + calls its method - then I get the above error.

Please advise on how I can do this correctly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毁梦 2024-11-13 08:33:35

通过执行以下操作在主线程上调用 SpeechClass

final SpeechClass c = getSpeechClass(); // get the speech class

View v = findViewById(R.id.anyview); //fetch a View: any one will do

v.post(new Runnable(){ public void run(){ c.doSomething(); }});

这应该在主线程上运行它。如果 doSomething 需要一段时间,可能会减慢你的 UI 速度,但你可以解决这个问题。

Call the SpeechClass on the main thread by doing something like this:

final SpeechClass c = getSpeechClass(); // get the speech class

View v = findViewById(R.id.anyview); //fetch a View: any one will do

v.post(new Runnable(){ public void run(){ c.doSomething(); }});

That should run it on the main thread. Might slow your UI down if doSomething takes a while, but you get to work that out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文