Ich habe ein Problem mit Google Cloud Speech. Ich kann Google Cloud Speech nicht pausieren, um die Erkennung anzuhalten. Ich sperre gerade den SpeechRecognizer herunter, und wenn ich ihn wieder brauche, beginne ich ihn erneut. Aber auf diese Weise dauert das Stoppen viel Zeit, und ich muss im Hintergrundthread laufen. Manchmal stoppt es rechtzeitig, aber nicht immer. Für ein paar Tage habe ich in Main Thread verwendet ich habe keine Probleme damit, aber jetzt fing es an Frames zu überspringen, also habe ich es bewegt. Ich brauche es sofort zu stoppen, weil nach dem stop von Speech to text gefolgt wird, und wenn ich warte, bis die Erkennung gestoppt wird, wird der Fluss lückenhaft aussehen, auch wenn ich ihn auf den Hintergrund-Thread verschoben habe. ich den Code aus ihrer Probe verwenden, um es zu starten und stoppen:Google Cloud Sprachpause
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));
}
});
}
die Anerkennung Beginn:
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));
}
});
}
ich Traceview und das Problem zu tun, viel Arbeit verwendet wird, ist
mVoiceRecorder.stop();
und der Code zu .stop()
public void stop() {
synchronized (mLock) {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}
}
Gibt es eine Möglichkeit, die Erkennung anzuhalten?