我正在尝试记录音频,但是start()类的MediaRecorder方法抛出了IllegalStateException
我使用以下代码:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/sdcard/");
try {
    recorder.prepare();
} catch (IllegalStateException e) {

// TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Log.i("Try","Exception");
recorder.start();

并得到许可
<uses-permission android:name="android.permission.RECORD_AUDIO" />

最佳答案

Vijay,recorder.setOutputFile(“/sdcard/”);正在设置目录,而不是文件。
替换为:

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

使用“/sdcard”硬编码易碎的路径,因此请使用上面的代码

另外,要使其正常工作,您必须添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

到您的AndroidManifext.xml

关于android - 为什么MediaRecorder的start()方法抛出IllegalStateException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5177039/

10-11 21:38