我注意到Google的speechRecognizer存在问题
我有一个onEndOfSpeech()监听器,有时我想播放语音提示或更改UI,所以我做了speechRecognizer.cancel(),它是异步的,会触发onEndOfSpeech()监听器。
当UI更改时,这非常有效。但是,当我尝试播放语音提示时,我会执行speechRecognizer.cancel();然后调用我的语音提示方法speak()[使用TTS],onEndOfSpeech()监听器永远不会被触发。当我第二次触发识别器并且我在不调用speak()的情况下取消时,一切都很好。
我试图设置断点,有时候如果在speechRecognizer.cancel()之后暂停,并且说话()足够长,onEndOfSpeech()实际上会触发......
我的演讲识别和说话是在不同的线程上运行,任何关于为什么会发生这种情况的想法?可能存在数据竞争还是某种类型?