我正在製作一個應用程序,允許用戶錄製音頻並將其保存在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