【问题标题】:android: media recorder : start failed: -38android:媒体记录器:启动失败:-38
【发布时间】:2012-10-01 14:21:06
【问题描述】:

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

详细信息:如果语音记录已经在本机应用程序的后台运行:语音记录器。 现在,我已将语音录制作为我的应用程序中的一项功能。

问题:当我尝试同时在我的应用程序中录制时,它给出了错误:

  : 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

但问题是因为录音已经在后台运行。 因此,如果它在其他应用程序中运行,有什么方法可以停止录音。

任何意见都会有很大帮助。

【问题讨论】:

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

标签: android state voice recorder


【解决方案1】:

我遇到了同样的错误-38,我发现有另一个后台服务通过(AudioRecord)使用麦克风,当禁用后台服务时,它起作用了。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多