사용자가 오디오를 녹음하고 SD 카드의 어딘가에 저장할 수있는 응용 프로그램을 만들고 있습니다. 오디오 녹음을 위해 MediaRecorder를 사용하고 있습니다.Android MediaRecorder IllegalStateException
androiddevblog 웹 사이트의 코드 중 일부는 stackoverflow에서 다른 튜토리얼을 확인하기 위해 다른 사용자가 권장 한 코드를 재사용하고 있습니다.
제 문제는 오디오를 녹음하기 위해 단추를 클릭 할 때마다 "귀하의 응용 프로그램이 강제로 중지되었습니다"라는 오류가 발생합니다. recorder.stop()에서 illegalStateException이 발생했기 때문에 디버거를 사용했습니다.
코드를 기반으로 기록되는 내용이 없습니다. 먼저 파일이 만들어지고 저장되는지 확인하려고합니다.
전이 질문을 게시하고 원래의 문제를 해결했지만 이후에이 문제가 발생했습니다. 그래서 그것은 중복으로 보일 수 있습니다.
public class MyRecorderActivity extends Activity{
private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder";
private static final String AUDIO_RECORDER_FILE_EXT_3GP = ".3gp"
private Button audio;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questionandanswer);
....
....
audio = (Button) findViewById(R.id.audio_recordactivity);
audio.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startRecording();
}
});
}
private String getFilename(){
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath,AUDIO_RECORDER_FOLDER);
if(!file.exists()){
file.mkdirs();
}
return (file.getAbsolutePath()+ "/ " + System.currentTimeMillis() + AUDIO_RECORDER_FILE_EXT_3GP);
}
private void startRecording(){
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(getFilename());
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.stop();
recorder.reset();
recorder.release();
}
}
작동 희망 – AndroidDev93