我正在尝试录制音频,但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