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年下來沒有繼續挖掘技術,造成技術很差。要努力瞭!!!

技術不怎麼行,被領導談話瞭幾次,深深的加深瞭我對自己的思考。我不能停止努力,加油才是硬道理!!!!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。