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 void startRecorderVoice() { 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
MediaRecorder录音,解决stop,start错误
最新推荐文章于 2024-08-16 13:30:49 发布