我想開發一個簡單的android錄音recorder.Everything builds罰款,它也運行在Android設備上罰款。似乎我可以開始錄製,但是當我想停止它時會拋出IllegalStateException異常。我找不到這個錯誤。下面是代碼:android-MediaRecorder throws 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;
}
}
我想觸發它:
VoiceRecorder VR =新VoiceRecorder();
vr.startRecord(cont);
vr.stopRecording(cont);調用啓動logcat的說,當
:(什麼應該沒問題)
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。com/dev-blog/android-audio-recording-tutorial/ – TheMaster42
嗯,我打電話準備開始之前,我等待20秒,直到我呼籲停止 –
這個答案是引用'MediaPlayer',但OP是問'MediaRecorder ' –