android – 为什么MediaRecorder的start()方法抛出IllegalStateException?

我正在尝试录制音频,但MediaRecorder类的start()方法会抛出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 通过adb shell命令查看内存,CPU,启动时间,电量等...
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客...
Android 常见adb命令 by:授客 QQ:1033553122 1、 查看所有已...
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...