0

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

当我在调试菜单中遇到错误时,我看到的View类是:

找不到来源。源附件不包含文件 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" />

我该如何解决这个问题?谢谢!

4

2 回答 2

2

您提供给录音机的文件名可能有问题。试试这个:

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

可能有帮助..

于 2013-06-19T11:06:35.037 回答
1

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

于 2013-09-07T00:06:13.227 回答