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的操作。怎么去释放啊,怎么去初始化,然后就可以播放了,其实非常简单。
关键性代码在这里:
mp = new MediaRecorder(); mp.setAudioSource(MediaRecorder.AudioSource.MIC); mp.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mp.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mp.setOutputFile(soundFile.getAbsolutePath());
先Stop,然后Release(),然后值为空!
最新感言:技术这东西,需要不断的学习,不断的努力!不要停止,唯有科学技术是第一生产力。这2年下来没有继续挖掘技术,造成技术很差。要努力了!!!
技术不怎么行,被领导谈话了几次,深深的加深了我对自己的思考。我不能停止努力,加油才是硬道理!!!!
Android实现录音的方法(最重要的是对MediaRecorder的试用方法)
原文地址:http://blog.csdn.net/lixiaodaoaaa/article/details/41213581