Почему метод start () MediaRecorder генерирует исключение IllegalStateException? - PullRequest
10 голосов
/ 03 марта 2011

Я пытаюсь записать звук, но метод 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" />

Ответы [ 2 ]

13 голосов
/ 03 марта 2011

Vijay, Recorder.setOutputFile ("/ sdcard /");устанавливает каталог, а не файл.Замените это на:

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

Используя жесткие коды "/ sdcard", путь, который является хрупким, поэтому используйте выше

Кроме того, чтобы это работало, вы должны добавить

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

на ваш AndroidManifext.xml

5 голосов
/ 19 апреля 2012

Это может быть полезно для кого-то в будущем.IllegalstateException генерируется, когда метод MediaRecorder. Prepare не вызывается и не вызывается после Mediarecorder.start или перед настройкой аудио / видео источников, формата и кодировщиков.Правильный порядок конфигурации указан в руководстве разработчика камеры по документации для Android

  1. разблокировка камеры
  2. управление камерой для медиа-рекордера -> setCamera
  3. set audio/ источник видео, формат, кодировщик
  4. подготовка
  5. запуск
...