Android:媒体记录器:启动失败:-38

4

简述:如何检查语音录制是否已在其他应用程序中后台运行。

详细:如果原生应用程序“语音记录器”中已经在后台运行语音记录,则现在我已将语音记录实现为我的应用程序的一个功能。

问题:当我尝试同时在我的应用程序中进行录制时,它会出现错误:

  : E/MediaRecorder: start failed: -38
  : E/MyApp: [1162][com.sec.MyApp.multimedia.RecordMyVoice]java.lang.IllegalStateException
  : E/MyApp:    at android.media.MediaRecorder.start(Native Method)
  : E/MyApp:    at com.sec.MyApp.multimedia.RecordMyVoice.doInBackground(RecordMyVoice.java:100)

RecordMyVoice.java文件中第100行的代码:

    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mRecorder.setOutputFile(mFileName);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mRecorder.prepare();
    mRecorder.start(); //code at 100th line

问题在于因为已经有语音记录在后台运行,所以有没有办法停止语音记录,如果它正在其他应用程序中运行。

任何输入都将是巨大的帮助。


如果它已经在运行,那么它应该有一个原因,不是吗?您可以提示用户停止它,如果他想使用“您”的录制功能。这并不是一个令人满意的答案,因此只是一条评论。也许有人有更好的想法。 - Fildor
你至少应该捕获 preparestart 抛出的异常。 - Michael
我已经添加了try catch块,但是处理程序仍然返回错误消息,我正在显示toast作为记录失败。但我希望停止后台录音机。 - parul
@Parul 现在解决了吗? - TheLittleNaruto
你能展示一下mFileName的字符串吗?我认为你的mFileName有问题。 - Vikrant_Dev
2个回答

1

我曾遇到同样的Error -38错误,后来发现有另一个后台服务在使用麦克风 (通过AudioRecord),当禁用该后台服务后,问题得以解决。


0

检查您的文件路径,目录必须存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接