diff --git a/FunctionRealize/Record/RecordActivity.java b/FunctionRealize/Record/RecordActivity.java new file mode 100644 index 0000000..da17df6 --- /dev/null +++ b/FunctionRealize/Record/RecordActivity.java @@ -0,0 +1,114 @@ +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; + } + } + } + } +} \ No newline at end of file