我对谷歌云演讲有一个问题。我不能暂停Google的演讲,以暂停我目前正在关闭的SpeechRecognizer,当我再次需要它时,我将重新启动它。但是这样,停止需要很长时间才能停止,我必须在后台线程中运行。有时它会及时停止,但并不总是如此。几天来,我在主线程上使用,我没有任何问题,但现在它开始跳过帧,所以我移动它。我需要它立即停止,因为在停止之后是语音到文本,如果我等待识别停止,即使我在后台线程上移动它,流看起来也是滞后的。我正在使用他们的示例中的代码来启动和停止它:
private void stopVoiceRecorder() {
mNotifyForVoiceEnd.start();
if (mVoiceRecorder != null) {
mVoiceRecorder.stop();
}
isListening = false;
runOnUiThread(new Runnable() {
@Override
public void run() {
appBar.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.primary));
}
});
}开始承认:
private void startVoiceRecorder() {
mNotifyForVoiceStart.start();
if (mVoiceRecorder != null) {
mVoiceRecorder.stop();
mVoiceRecorder = null;
}
mVoiceRecorder = new VoiceRecorder(mVoiceCallback);
mVoiceRecorder.start();
isListening = true;
runOnUiThread(new Runnable() {
@Override
public void run() {
appBar.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.tab_not_hearing));
}
});
}我使用了TraceView,做大量工作的问题是
mVoiceRecorder.stop();和.stop()的代码
public void stop() {
synchronized (mLock) {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}
}有什么办法来暂停识别吗?
发布于 2017-09-13 08:39:02
我找到了解决办法:
// Simply delete synchronized (mLock)
public void stop() {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}https://stackoverflow.com/questions/46090484
复制相似问题