我正在尝试录制音频,但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" />
答案 0 :(得分:13)
Vijay,recorder.setOutputFile(“/ sdcard /”);正在设置目录,而不是文件。 将其替换为:
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/youraudiofile.3gp";
使用“/ sdcard”硬编码脆弱的路径,所以使用上面的
此外,为此,您必须添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
到您的AndroidManifext.xml
答案 1 :(得分:5)
将来可能对某些人有所帮助。在IllegalstateException
之后或在配置音频/视频源,格式和编码器之前未调用或调用MediaRecorder. Prepare
方法时,会引发Mediarecorder.start
。
在android文档的相机开发者指南中提到的正确配置顺序
- 相机解锁
- 控制相机到媒体记录器 - &gt; setCamera
- 设置音频/视频源,格式,编码器
- 制备
- 启动
醇>