【问题标题】:Android SpeechRecognizer should only be used from the application's main threadAndroid SpeechRecognizer 只能在应用程序的主线程中使用
【发布时间】:2011-05-11 18:09:09
【问题描述】:

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

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

05-06 23:51:28.955: ERROR/AndroidRuntime(553): java.lang.RuntimeException: SpeechRecognizer 只能在应用程序的主线程中使用

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

设置如下:

主类 - BaseGameActivity 语音类

Main Class 实例化一个新的 SpeechClass + 调用它的方法 - 然后我得到上述错误。

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

【问题讨论】:

    标签: java android speech-recognition speech-to-text


    【解决方案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,但您可以解决这个问题。

    【讨论】:

    • 嗨!我尝试添加它,但现在它抛出:05-11 19:37:24.894: ERROR/AndroidRuntime(2165): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    • 啊,这可能意味着您正在做的某些事情正在调用requestFeature():您可能需要在设置 Activity 的内容视图之前设置语音位,这会有点post 方法的问题。尝试创建一个Handler 并使用它来运行语音类方法。
    • 我想你的意思是其中之一:developer.android.com/reference/android/os/Handler.html 但我没有工作知识来锻炼什么会改变!
    • 一个紧凑的小教程(万岁谷歌):tutorialforandroid.com/2009/01/using-handler-in-android.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2018-03-03
    相关资源
    最近更新 更多