Android实现录音的方法(最重要的是对MediaRecorder的试用方法)

package cn.eoe.record;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

	private OnClickListener btnClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {

			switch (v.getId()) {
				case R.id.btnStartRecord :
					startRecord();
					break;
				case R.id.btnStopRecord :
					stopRecord();
					break;
			}

		}
	};

	private void startRecord() {
		if (mp == null) {
			File dir = new File(Environment.getExternalStorageDirectory(), "sounds");
			if (!dir.exists()) {
				dir.mkdirs();
			}
			File soundFile = new File(dir, System.currentTimeMillis() + ".amr");
			if (!soundFile.exists()) {
				try {
					soundFile.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			mp = new MediaRecorder();
			mp.setAudioSource(MediaRecorder.AudioSource.MIC);
			mp.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
			mp.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
			mp.setOutputFile(soundFile.getAbsolutePath());
			try {
				mp.prepare();
				mp.start();
			} catch (IllegalStateException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	private void stopRecord() {
		if (mp != null) {
			mp.stop();
			mp.release();
			mp = null;
		}
	}

	private MediaRecorder mp = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.btnStartRecord).setOnClickListener(btnClickListener);
		findViewById(R.id.btnStopRecord).setOnClickListener(btnClickListener);
	}
}

最最重要的是对MediaRecorder的操作。怎么去释放啊。怎么去初始化,然后就能够播放了,事实上非常easy。

关键性代码在这里:

	mp = new MediaRecorder();
			mp.setAudioSource(MediaRecorder.AudioSource.MIC);
			mp.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
			mp.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
			mp.setOutputFile(soundFile.getAbsolutePath());

最后停止录音那段。就须要直接停止就能够了。释放掉MediaRecorder()这个对象。释放成空的。


先Stop,然后Release(),然后值为空。

最新感言:技术这东西,须要不断的学习,不断的努力!

不要停止。唯有科学技术是第一生产力。这2年下来没有继续挖掘技术,造成技术非常差。

要努力了!!

技术不怎么行,被领导谈话了几次,深深的加深了我对自己的思考。我不能停止努力,加油才是硬道理!!!!


posted @ 2018-04-21 18:35  zhchoutai  阅读(447)  评论(0编辑  收藏  举报