Ich habe das folgende Problem: Ich benutze SpeechRecognizer, um ein paar Worte zu identifizieren. Ich benutze dieAudioRecord: start() status -38
public void onResults
Methode, um die SpeechRecognizer zu zerstören.
Gleich nach der Zerstörung initialisiere ich einen AudioRecord und starte die Aufnahme vom Mikrofon. Dies führt zu dem folgenden Fehler in meinem logcat:
12-09 00:44:01.976: E/AudioRecord(21185): start() status -38
Keine Ausnahme in meinem Code geworfen wird. Der AudioRecord startet einfach nicht richtig. Ich nehme an, dass der SpeechRecognizer das Mikrofon nicht schnell genug freigibt, weil, wenn ich ein Thread.sleep (200) vor der Initialisierung von AudioRecord hinzufüge, I dieses Problem nicht auftreten.
Diese Lösung ist aus offensichtlichen Gründen sehr schlecht. Somit habe ich folgende Frage:
Wie überprüfe ich ob der AudioRecord richtig initialisiert ist? (Ich bekomme keine Ausnahme in meinem Code.)
_audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED
ist auch falsch.
Oder wie überprüfe ich, ob SpeechRecognizer das Mikrofon korrekt freigegeben hat?
Vielen Dank!
Wie überprüft man, ob 'getRecordingState()' gleich 'RECORDSTATE_RECORDING' ist? – Michael
Danke, völlig übersehen, dass man. – user3081081