package com.record; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.media.MediaRecorder; import android.os.Environment; import android.view.Window; import android.widget.Button; import android.widget.Toast; import java.io.File; import java.io.IOException; @SuppressLint("Registered") public class RecordActivity extends Activity implements View.OnClickListener { Button startRecording, stopRecording, pauseRecording;//开始录音、停止录音、释放资源 MediaRecorder recorder; File audioFile; //录音保存的文件 boolean isRecoding = false;// true 表示正在录音 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); init(); initListener(); } //初始化 public void init() { stopRecording = (Button) this.findViewById(R.id.btn_stop); startRecording = (Button) this.findViewById(R.id.btn_play); pauseRecording = (Button) this.findViewById(R.id.btn_pause); if (!path.exists()) { path.mkdirs(); } } //初始化麦克风 private void InitMedia(){ recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置播放源 麦克风 recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); //设置输入格式 3gp recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置编码AMR } //设置监听器 public void initListener() { startRecording.setOnClickListener(this); stopRecording.setOnClickListener(this); pauseRecording.setOnClickListener(this); } //此处还应该对手机进行下判断,判断下手机里面有没有内存卡 //保存在SD卡下MediaRecorderTest文件夹中 File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/MediaRecorderTest"); //录音 public void recod() { InitMedia(); int i = (int) (Math.random() * 10000); String a = Integer.toString(i); String b = "Voice"; String FileName = b + a; try { audioFile = new File(path, FileName + ".aac"); //audioFile=new File(path,"ycc.aac"); if (audioFile.exists()) { audioFile.delete(); } audioFile.createNewFile();//创建文件 } catch (Exception e) { throw new RuntimeException("Couldn't create recording audio file", e); } recorder.setOutputFile(audioFile.getAbsolutePath()); //设置输出文件 try { recorder.prepare(); } catch (IllegalStateException e) { throw new RuntimeException("IllegalStateException on MediaRecorder.prepare", e); } catch (IOException e) { throw new RuntimeException("IOException on MediaRecorder.prepare", e); } isRecoding = true; recorder.start(); } public void onClick(View v) { //开始录音 while (true){ if (v == startRecording) { Toast.makeText(RecordActivity.this, "开始录音", Toast.LENGTH_SHORT).show(); recod(); break; } if (v == pauseRecording) { } //停止录音 if (v == stopRecording) { if (isRecoding) { Toast.makeText(RecordActivity.this, "录音结束,文件已存至/MediaRecorderTest", Toast.LENGTH_SHORT).show(); recorder.stop();//调用stop之后recorder会被清空,再次录音要再次初始化recorder break; } } } } }