3

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

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

知道为什么吗?(例如,它无用/无意义,应用程序员太容易实现等)

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

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

还是我需要更复杂的东西,比如计数器……甚至是原子计数器?

4

2 回答 2

4

首先,定义“听”。它是否从您开始:

  • 称为 startListening() ?
  • 收到 onReadyForSpeech() 了吗?

我相信这两个(有效和有用的)场景之间的区别是将实现留给 API 用户的原因。

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

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

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

于 2013-03-26T21:07:29.337 回答
-1

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

只需设置一个标志来告诉自己您处于什么状态(听或不听)。

于 2013-03-25T19:49:34.443 回答