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

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

时间: 2024-10-08 15:54:11

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

Android第五期 - 更新自己的apk本地与网络两种方法

首先是本地: ParseXmlService部分: package com.szy.update; import java.io.InputStream; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element

Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)

package com.android.filebrowser; import java.io.*; import java.net.*; public class FileEncodingDetect { static final int GB2312 = 0; static final int ASCII = 1; static final int UTF8 = 2; static final int UNICODE = 3; //static final int GBK = 4; //st

android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法

android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法 09. 四 / android基础 / 没有评论 SharedPreferences保存数据到xml文件 有时候要保存activity的某些状态数据,就可以保存到SharedPreferences 很简单的保存和获取方法.但很实用. itcast是xml的文件名

Android笔记(三十四) Android中线程之间的通信(六)Handle中的post()方法详解

我们之前都是使用sendMessage()方法来发送消息,使用handleMessage来处理消息的,今天我们来看另外一种方法,先看代码: package cn.lixyz.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.wi

Android项目中gen文件下R文件无法生成的解决的方法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.JAVA文件无法生成 1.gen文件夹的用处 android gen文件夹下的R.java并非由用户创建,而是androidproject本身将android的资源进行自己主动"编号"(ID)值. 2.gen文件夹下R文件无法更新/生成的原因 1)res文件夹下的layout下的xml文件名

Android系统切换语言的时候APP无法更新资源文件的解决方法

你的APP支持多语言环境,假如它正在后台运行,此时用户去更换系统语言,等系统语言换好后直接从后台打开它,此时用户会发现你的界面语言没有和系统语言保持一致:为什么?主要是界面资源没有重新加载 如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次ap

android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法

先说说我的遇到的问题: 1. 我在activity里写一个 fragment 2.这个fragment里有个 imageView ,用于显示图片. 我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用  ThumbnailUtils.extractThumbnail 方法生成缩略图. 我们先看看ThumbnailUtils.extractThumbnail(source, width, height);  这个方法的参数   source 源文件(

Android开发之查看应用包名package和入口activity名称的方法

使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk 2.运行后的结果中以下两行分别是应用包名package和入口activi

Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(二)

Intent intent = getIntent(); String contentUri = null; Uri uri =null; if (intent.getData() != null) { uri = intent.getData(); contentUri = "file".equals(uri.getScheme()) ? FileContentProvider.BASE_URI + uri.getEncodedPath() : uri.toString(); Str