나는 간단한 안드로이드 오디오 레코더를 개발하려고합니다. 모든 것이 잘 빌드되고 안드로이드 장치에서도 잘 실행됩니다. 내가 녹음을 시작할 수있는 것처럼 보이지만 내가 멈추고 싶을 때 그것은 IllegalStateException을 던집니다. 나는 그 실수를 발견 할 수 없다.android - MediaRecorder가 illegalstateexception을 던졌습니다
public class VoiceRecorder {
MediaRecorder recorder= new MediaRecorder();
static Context cont;
public void startRecord(Context context) throws IllegalStateException, IOException{
cont = context;
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(cont.getFilesDir()+"/recordings.3gp");
recorder.prepare();
recorder.start();
}
public void stopRecording(Context context) {
cont = context;
recorder.stop();
recorder.release();
File file = new File (cont.getFilesDir()+"/recordings.3gp");
UploadFile.uploadFile("recordings.3gp", file);
recorder = null;
}
}
나는 그것을 트리거 할 : 다음은 코드입니다
보이스 레코더의 VR = 새로운 보이스 레코더는();
vr.startRecord (cont);
vr.stopRecording (cont);
로그 캣 말한다 시작 전화 :
09-06 22:56:42.830: D/AudioHardwareMSM72XX(123): audpre_index = 0, tx_iir_index = 0
09-06 22:56:42.840: D/HTC Acoustic(123): msm72xx_enable_audpre: 0x0000
09-06 22:56:42.850: I/AudioHardwareMSM72XX(123): Routing audio to Speakerphone
09-06 22:56:42.850: D/HTC Acoustic(123): msm72xx_enable_audpp: 0x0001
09-06 22:56:42.850: I/AudioHardwareMSM72XX(123): Routing audio to Speakerphone
09-06 22:56:42.860: D/HTC Acoustic(123): msm72xx_enable_audpp: 0x0001
09-06 22:56:42.870: D/AudioFlinger(123): setParameters(): io 3, keyvalue routing=262144;vr_mode=0, tid 156, calling tid 123
09-06 22:56:42.870: I/AudioHardwareMSM72XX(123): Routing audio to Speakerphone
09-06 22:56:42.880: D/AudioHardwareMSM72XX(123): audpre_index = 0, tx_iir_index = 0
09-06 22:56:42.880: D/HTC Acoustic(123): msm72xx_enable_audpre: 0x0000
09-06 22:56:42.880: I/AudioHardwareMSM72XX(123): do input routing device 40000
09-06 22:56:42.880: I/AudioHardwareMSM72XX(123): Routing audio to Speakerphone
09-06 22:56:42.890: D/HTC Acoustic(123): msm72xx_enable_audpp: 0x0001
(확인 무엇을해야한다)하지만 난 정지를 호출 할 때 :
해당 오류가 발생 마치09-06 22:59:52.440: E/MediaRecorder(1069): stop called in an invalid state: 1
09-06 22:59:52.440: W/System.err(1069): java.lang.IllegalStateException
09-06 22:59:52.460: W/System.err(1069): at android.media.MediaRecorder.stop(Native Method)
09-06 22:59:52.460: W/System.err(1069): at de.spyapp.VoiceRecorder.stopRecording(VoiceRecorder.java:33)
09-06 22:59:52.460: W/System.err(1069): at de.spyapp.CheckCMD.checkCMD(CheckCMD.java:30)
09-06 22:59:52.460: W/System.err(1069): at de.spyapp.AppActivity$2.run(AppActivity.java:44)
09-06 22:59:52.460: W/System.err(1069): at java.lang.Thread.run(Thread.java:1096)
두 개 이상의 하이퍼 링크를 게시 할 수 없습니다. 추가 읽기 : - http://stackoverflow.com/questions/11852852/stop-called-in-an-invalid-state-1 - http : //www.benmccann. – TheMaster42
흠, 내가 시작하기 전에 준비를했고, 내가 멈출 때까지 20 초 정도 기다려야한다. –
이 답변은'MediaPlayer'를 참조하고 있지만, OP는'MediaRecorder ' –