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

前端之家收集整理的这篇文章主要介绍了android – 为什么MediaRecorder的start()方法抛出IllegalStateException?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试录制音频,但MediaRecorder类的start()方法会抛出IllegalStateException.
我使用以下代码
  1. MediaRecorder recorder = new MediaRecorder();
  2. recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  3. recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  4. recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  5. recorder.setOutputFile("/sdcard/");
  6. try {
  7. recorder.prepare();
  8. } catch (IllegalStateException e) {
  9.  
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. } catch (IOException e) {
  13. // TODO Auto-generated catch block
  14. e.printStackTrace();
  15. }
  16. Log.i("Try","Exception");
  17. recorder.start();

并获得许可

  1. <uses-permission android:name="android.permission.RECORD_AUdio" />

解决方法

Vijay,recorder.setOutputFile(“/ sdcard /”);正在设置目录,而不是文件.
替换为:
  1. mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
  2. mFileName += "/youraudiofile.3gp";

使用“/ sdcard”硬编码脆弱的路径,所以使用上面的方法

此外,为此,您必须添加

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

到您的AndroidManifext.xml

猜你在找的Android相关文章