MediaRecorder錄音,解決stop,start錯誤
阿新 • • 發佈:2019-01-24
public class Recorder { private static final int MAX_LENGTH=1000*60*3;//3分鐘 private MediaRecorder recorderl; public Recorder() { initial(); } private void initial() { recorderl=new MediaRecorder(); String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.amr"; recorderl.setAudioSource(MediaRecorder.AudioSource.MIC); recorderl.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); recorderl.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorderl.setMaxDuration(MAX_LENGTH); recorderl.setOutputFile(path); } public void startRecorder() { initial();try { recorderl.prepare(); } catch (IOException e) { e.printStackTrace(); } recorderl.start(); } public void stopRecorder() { if(recorderl!=null) { recorderl.stop(); recorderl.release(); } recorderl=null; } public voidstartRecorderVoice() { handler.postDelayed(run,200); } public void stopRecorderVoice() { handler.removeCallbacks(run); } private Handler handler=new Handler(); private Runnable run=new Runnable() { @Override public void run() { Log.i("view","test"+recorderl.getMaxAmplitude()); handler.postDelayed(run,200); } };
}
每次start前記得initial,不然連續點選會出現stop,start這些錯誤
這是因為stop或者release後,MediaRecorder被回收了,不能重新start