AudioRecord:开始()状态-38

我有以下问题:我使用SpeechRecognizer识别几个字。 我用

public void onResults 

方法来销毁SpeechRecognizer。

在销毁之后,我初始化一个AudioRecord并从麦克风开始录音。 这导致我的logcat中的以下错误:

 12-09 00:44:01.976: E/AudioRecord(21185): start() status -38 

我的代码中没有引发exception。 AudioRecord只是无法正常启动。 我假设SpeechRecognizer不会很快释放麦克风,因为如果我在AudioRecord的初始化之前添加Thread.sleep(200),我不会遇到此问题。

这个解决scheme非常糟糕,原因很明显。 因此,我有以下问题:

如何检查AudioRecord是否正确初始化? (我的代码中没有出现exception。)

 _audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED 

也是错误的。

或者我如何检查SpeechRecognizer是否正确地释放麦克风?

非常感谢!

Solutions Collecting From Web of "AudioRecord:开始()状态-38"

你需要确保你发出audioRecord.stop();audioRecord.release(); 在你的onPause()或类似的方法。 如果你不这样做,下一次你运行应用程序,你将无法访问设备,你会得到start() status -38

我有一个类似的问题,这个AudioRecord的开始()错误状态-38我最终做的是循环播放audiologging器的可能configuration,如回答者在这个问题中说AudioRecord对象不初始化我喜欢这个方法,因为它不不pipe你在哪个设备上运行它,最终都会find它喜欢的configuration。