Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 媒体录制器上的非法状态异常_Android_Illegalstateexception_Android Mediarecorder - Fatal编程技术网

Android 媒体录制器上的非法状态异常

Android 媒体录制器上的非法状态异常,android,illegalstateexception,android-mediarecorder,Android,Illegalstateexception,Android Mediarecorder,我想使用Media Recorder录制音频文件并将其保存到sd卡。调试器显示,recorder.start()行引发了一个IllegalStateException。代码取自android开发人员网站,唯一的更改是文件名和路径 当我到达调试菜单中的错误时,会显示视图类,其中显示: 找不到源。 源附件不包含文件View.class的源。 您可以通过单击下面的“更改附加源”来更改源附件: canRecord是一个boolean函数,最初设置为true,指示在onClick函数中调用哪个方法。这一功

我想使用Media Recorder录制音频文件并将其保存到
sd卡
。调试器显示,
recorder.start()
行引发了一个
IllegalStateException
。代码取自android开发人员网站,唯一的更改是文件名和路径

当我到达调试菜单中的错误时,会显示
视图
类,其中显示:

找不到源。 源附件不包含文件View.class的源。 您可以通过单击下面的“更改附加源”来更改源附件:

canRecord是一个
boolean
函数,最初设置为true,指示在
onClick
函数中调用哪个方法。这一功能正在发挥作用

@SuppressLint("SimpleDateFormat")
private void record(){

    SimpleDateFormat timeStampFormat = new SimpleDateFormat("MM/dd/yyyy");
    String audio_path = Environment.getExternalStorageDirectory() + "/resources/resources/WI1/";
    String fileName = username +"-"+ timeStampFormat.format(new Date())+".mp4"; 
    audio_button.setText("Recording");

    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setOutputFile(audio_path+fileName);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    try {
        recorder.prepare();
    } catch (IOException e) {
        Toast.makeText(this, "Can't record audio at this time", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
    canRecord = false;
    recorder.start();
} // record
这是停止录制功能,尽管它从未达到这一点

private void stopRecording(){
    audio_button.setText("Attach Audio");
    recorder.stop();
    recorder.release();
}
最后,我向清单中添加了以下权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


我怎样才能解决这个问题?谢谢

您提供给记录器的文件名可能有问题。请尝试以下操作:

String audio_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/resources/resources/WI1/";
    String fileName = audiopath+"-"+ timeStampFormat.format(new Date())+".mp4";

可能会有帮助。

您提供给记录器的文件名可能有问题。请尝试以下操作:

String audio_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/resources/resources/WI1/";
    String fileName = audiopath+"-"+ timeStampFormat.format(new Date())+".mp4";
希望对您有所帮助。

我正在使用libgdx(多平台开源游戏引擎)当我尝试使用androids代码而不是libgdx代码进行录制时,我也遇到了类似的问题。结果我需要处理我的libgdx录制器代码,或者干脆将其全部删除。因此,也许你有另一个录制器干扰了某个地方

我正在使用libgdx(多平台开源游戏引擎)当我尝试使用androids代码而不是libgdx代码进行录制时,我也遇到了类似的问题。结果我需要处理我的libgdx录制器代码,或者干脆将其全部删除。因此,也许你有另一个录制器在某处干扰