Вам необходимо настроить аудиоисточник и кодировщик в правильном порядке.Исключением, которое вы получаете, является java.lang.IllegalStateException.Попробуйте следующее:
if(camera == null) {
camera = Camera.open();
camera.unlock();
}
recorder.setCamera(camera);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile("/sdcard/adtvworld.3gpp");
recorder.setPreviewDisplay(holder.getSurface());
recorder.prepare();
Этот фрагмент кода должен работать хорошо для вас.Не стесняйтесь менять AudioEncoder на что-то другое, чем AAC, хотя он наиболее эффективен для низких кбит / с.