android录音 MediaRecorder类的使用简介

录音还涉及到录音文件的存储,即文件的操作。首先检查sd卡是否存在,然后再sd卡根目录下建立一个文件夹:myRecords。接着在该文件夹下创建录音文件,文件名我采用系统的当前时间命名。这样既能显示录音文件的录制时间,又能保证文件名的唯一性。

下面是工具类中抽取的部分方法:

/**
	 * 判断sd卡是否存在
	 * @return
	 */
	public static boolean sdcardIsExist(){
		return Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
	}

/**
	 * 在SD卡指定文件夹下创建文件,如果不存在该目录则创建该目录
	 * @param dirName
	 * @param fileName
	 * @return
	 * @throws IOException
	 */
	
	public static File creatSDFile(String dirName,String fileName) throws IOException {
		//创建目录
		File dir = creatSDDir(dirName);
		//创建文件
		File file = new File(dir.getAbsolutePath(),fileName);
		Log.i("tag", "dir.gee---->"+dir.getAbsolutePath());
		file.createNewFile();
		return file;
	}
	/**
	 * 在SD卡根目录上创建文件夹,如果不存在,则创建
	 * @param dirName
	 * @return
	 */
	public static File creatSDDir(String dirName) {
		File dir = new File(getSdRootDir()+java.io.File.separator+dirName);
		if(!dir.exists())
		   dir.mkdir();
		return dir;
	}


下面介绍MediaRecorder类在录音中的简单使用:

开始录音:

<span style="font-family:Microsoft YaHei;font-size:18px;">MediaRecorder mediaRecorder = new MediaRecorder();
			// 设置声音来源于mic话筒
			mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
			// 设置输出格式
			mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
			// 设置解码类型
			mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
			// 设置输出到文件
			mediaRecorder.setOutputFile(recordFile.getAbsolutePath());
			
			// 录音准备
			mediaRecorder.prepare();
			// 开始录音
			mediaRecorder.start();</span>

停止录音:

<span style="font-family:Microsoft YaHei;">// 停止录音
	private void stopRecord() {
		if (mediaRecorder != null && isRecoding) {
			mediaRecorder.stop();
			mediaRecorder.release();
			mediaRecorder = null;
		}

	}</span>


注意:还要监听键盘返回键和自己设置的返回键,以防在录音时用户点击返回键导致录音失败。

	<span style="font-family:Microsoft YaHei;">/**
	 * 当点击返回键时,提示是否保存
	 */
	@Override
	public void onBackPressed() {
		if (isRecoding) {
			new AlertDialog.Builder(this).setTitle("系统提示!")
					.setMessage("正在录音,请保存后返回。").create().show();
			return;
		} else {
			super.onBackPressed();
		}

	}</span>

一般还要重写onDestory()方法,释放MediaRecorder资源

<span style="font-family:Microsoft YaHei;">/**
	 * 释放mediaRecorder
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(mediaRecorder!=null&&!isRecoding)
		{
			mediaRecorder.release();
			mediaRecorder=null;
		}
	}</span>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子林Android

感谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值