【发布时间】:2014-08-03 18:54:26
【问题描述】:
我知道 Stackoverflow 和其他网站上有很多关于 SpeechRecognizer 类以及如何实现它的链接。我已经经历了其中的几个并且已经搜索了几个小时。 尽管有服务中的实现示例,但它们似乎对我不起作用。
我的应用程序有一个活动,但是它仅用于用户设置,并且在我的服务运行时不运行,该服务与系统分开调用。因此,我的服务没有任何要关联的主应用程序线程来运行/调用 SpeechRecognizer 类的方法。
正如 android 文档中所述,here:
'这个类的方法只能从主应用线程调用。'
当我运行包含我的服务类中的 SpeechRecognizer.startListening(mSpeechRecognizerIntent) 方法的代码时,我收到以下错误:
java.lang.RuntimeException: SpeechRecognizer 只能在应用程序的主线程中使用
有没有办法解决这个问题?我读过 SpeechRecognizer 可以“在后台或从服务中运行时识别语音”,我在这里发现:
Comparison of Speech Recognition use in Android: by Intent or on-thread?
所以这基本上就是我想要的,我似乎无法启动 SpeechRecognizer,因为我收到了提到的错误。 您能否告诉我是否有必要在应用程序的主线程中调用以下方法(我没有):
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); mSpeechRecognizer.setRecognitionListener(new SpeechRecognitionListener());
我的代码和这个链接顶部答案中的代码基本相同:(没有 IncomingHandler 类,我相信它只是用来控制监听器的时间)
Android Speech Recognition as a service on Android 4.1 & 4.2
非常感谢您的帮助,在此先感谢。 这是我的第一个 android 应用程序,所以我对它很陌生,请多多包涵;)
【问题讨论】:
标签: java android android-service