【问题标题】:MediaRecorder start failed: -38MediaRecorder 启动失败:-38
【发布时间】:2014-05-31 15:39:44
【问题描述】:

我搜索了这个问题是否没有重复,我看到有些没有答案,有些没有帮助。

这是我的代码:

private void startRecording()
{
            mRecorder = new MediaRecorder();
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

            mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
              mFileName += "/recordedHeckPost_.3gp";

            mRecorder.setOutputFile(mFileName);                  

                try {
                    mRecorder.prepare();
                    //Thread.sleep(2000);
                    mRecorder.start();                  
        }
                catch (InterruptedException e) 
                {   // TODO Auto-generated catch block
            e.printStackTrace();
        }     
            catch(IllegalStateException e)
            {
                e.printStackTrace();
            } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

private void stopRecording()
{
        mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
}

运行此代码后(在 Nexus 5 上)我得到以下开始 失败 -38 异常

05-31 18:17:39.404: E/MediaRecorder(2464): start failed: -38
05-31 18:17:39.404: W/System.err(2464): java.lang.IllegalStateException
05-31 18:17:39.404: W/System.err(2464):     at android.media.MediaRecorder.start(Native Method)

谢谢。

【问题讨论】:

    标签: android mediarecorder android-mediarecorder


    【解决方案1】:

    找到了解决方案,看来我在后台有一些其他服务正在使用 AudioRecord 并使用麦克风......所以那就是 -38 :)

    【讨论】:

    • 这具体是哪个后台服务?
    • 这是我的应用服务之一,不是操作系统
    • 找到了!从我测试的另一个应用程序中,我隐藏了它的图标!如果没有关于后台其他服务的答案,我永远不会意识到这一点。谢谢!
    • 我怎样才能找到在后台运行的用于录音或使用麦克风的其他服务?
    • 只需在您的应用程序的源代码中检查字符串“AudioRecord”或“MediaRecorder” ....或其他方式来查找您是否有使用麦克风的代码....
    【解决方案2】:

    在我的情况下,当我在关闭(第一个)相机期间忘记释放 MediaRecorder 时,切换到第二个相机后出现错误(MediaRecorder: start failed: -38):

    mediaRecorder?.release()
    mediaRecorder = null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2012-07-30
      • 2012-06-30
      • 1970-01-01
      • 2016-03-22
      相关资源
      最近更新 更多