use*_*081 14 android audiorecord
我有以下问题:我使用SpeechRecognizer来识别几个单词.我用
public void onResults
Run Code Online (Sandbox Code Playgroud)
销毁SpeechRecognizer的方法.
在破坏之后我初始化AudioRecord并从麦克风开始录音.这导致我的logcat中出现以下错误:
12-09 00:44:01.976: E/AudioRecord(21185): start() status -38
Run Code Online (Sandbox Code Playgroud)
我的代码中没有异常.AudioRecord无法正常启动.我假设SpeechRecognizer没有足够快地释放麦克风,因为如果我在AudioRecord初始化之前添加Thread.sleep(200),我不会遇到这个问题.
由于显而易见的原因,此解决方案非常糟 因此,我有以下问题:
如何检查AudioRecord是否已正确初始化?(我的代码中没有异常.)
_audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED
Run Code Online (Sandbox Code Playgroud)
也是假的.
或者我如何检查SpeechRecognizer是否正确释放麦克风?
非常感谢!
你需要确保你发出audioRecord.stop();并audioRecord.release();在您的onPause()或类似的方法.如果不这样做,下次运行应用程序时,您将无法访问该设备,您将获得start() status -38
我遇到了与此AudioRecord start() 错误状态 -38类似的问题 ,我最终所做的是循环播放录音机的可能配置,就像回答者在这个问题 AudioRecord 对象未初始化中所说的那样 ,我喜欢这种方法,因为它不无论您在什么设备上运行它,它最终都会找到它喜欢的配置。