小编典典

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

java

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

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

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

如何访问应用程序主线程?以及如何确保我的语音代码在其中运行。

设置如下:

主类-BaseGameActivity SpeechClass

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

请提供有关如何正确执行此操作的建议。


阅读 247

收藏
2020-11-26

共1个答案

小编典典

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变慢,但是您可以解决这个问题。

2020-11-26