i\'ve searched many topics but no straight answer.
I have this code :
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecord
Try putting the start function in the same block as prepare function. maybe there's an exception blocking prepare from executing and goes directly to start thus causing an IllegalStateException.
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(output_formats[currentFormat]);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(getFilename());
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Try to start your recorder only when it is prepared :
try {
recorder.prepare();
recorder.start();
mStartRecording = true;
} catch (IOException e) {
Log.e( LOG_TAG, "Error when preparing or starting recorder", e);
}