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的操作。怎么去释放啊,怎么去初始化,然后就可以播放了,其实非常简单。

关键性代码在这里:

	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年下来没有继续挖掘技术,造成技术很差。要努力了!!!

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。