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

srf*_*srf 4 android speech-recognition

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

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

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

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

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

或者我是否需要更复杂的东西,例如计数器......甚至原子计数器?

sca*_*moi 5

首先,定义“听”。是否从以下几点开始:

  • 调用 startListening() 吗?
  • 收到 onReadyForSpeech() 吗?

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

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

  • 在调用 startListening()后或输入 onReadyForSpeech() 后立即设置它。这是你的决定...
  • 在 onResults()、onError() 中以及 在调用 SpeechRecognizer.cancel()后立即重置它。

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