是否有isListening()方法或...如何实现isListening()

时间:2013-03-25 19:43:39

标签: android speech-recognition

SpeechRecognizer类包括诸如isRecognitionAvailable(),startListening()和stopListening()之类的方法,但是没有方法来检查它是否当前正在侦听。

我也检查了RecognitionListener类,它也没有这样的“isListening()”方法。

任何想法为什么?(例如,它无用/无意义,应用程序员太容易实现等)

如果确实没有SDK API来提供此功能,那么实现这种“isListening()”方法的最佳方法是什么?

是否像在onReadyForSpeech()中设置布尔值并在onEndOfSpeech()中清除它一样简单?

或者我是否需要更复杂的东西,例如柜台......甚至是Atomic柜台?

2 个答案:

答案 0 :(得分:4)

首先,定义“倾听”。它是从你的观点开始的吗?

  • 叫做startListening()?
  • 收到onReadyForSpeech()?

我认为这两种(有效和有用)方案之间的区别是将实现留给API用户的原因。

然后,正如@HoanNguyen所说,在RecognitionListener中声明一个布尔数据成员:

  • 在调用startListening()后立即设置,或者在输入onReadyForSpeech()后立即设置。这是你的电话......
  • 调用SpeechRecognizer.cancel()之后立即在onResults(),onError() 中重置它。

注意:正如@HoanNguyen正确指出的那样,在调用stopListening()之后立即重置该布尔值是不正确的。

答案 1 :(得分:-1)

你知道什么时候打电话给startListening(),你知道什么时候打电话给stopListening()。为什么你需要一个听众?

只需设置一个标志,告诉自己你所处的状态(听或不听)。