I have the following problem: I use SpeechRecognizer to identify a few words. I use the
public void onResults
method to destroy the SpeechRecognizer.
Right after the destruction I initialize an AudioRecord and start recording from the mic. This leads to the following error in my logcat:
12-09 00:44:01.976: E/AudioRecord(21185): start() status -38
No exception is thrown in my code. The AudioRecord just does not start properly. I am assuming that the SpeechRecognizer does not release the microphone quickly enough, because if I add a Thread.sleep(200) in front of the initialization of the AudioRecord, I do not experience this issue.
This solution is very bad for obvious reasons. Thus, I have the following question:
How do I check whether the AudioRecord is initialized properly? (I do not get an exception in my code.)
_audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED
is false as well.
Or how do I check whether SpeechRecognizer released the microphone properly?
Thanks a lot!
You need to make sure you issue audioRecord.stop();
and audioRecord.release();
in your onPause()
or similar methods. If you don't, the next time you run the app, you won't get access to the device, and you'll get start() status -38
I was having a similar problem to this AudioRecord start() error status -38 what i eventually did was loop over the possible configurations of the audio recorder like the answerer said in this question AudioRecord object not initializing I like this method since it doesn't matter what device you run it on it will eventually find a configuration that it likes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With