关闭

录制一段音频

492人阅读 评论(0) 收藏 举报
分类:
package com.siyehuazhilian.mediarecorder;

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;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button startButton, stopButton;
	private MediaRecorder mediaRecorder;
	private File mRecAudioFile;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		startButton = (Button) findViewById(R.id.button_start);
		stopButton = (Button) findViewById(R.id.button_stop);
		mediaRecorder = new MediaRecorder();

		startButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				recorderStart();
				Toast.makeText(MainActivity.this, "开始录音", 1000).show();
			}
		});
		stopButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				recorderStop();
				Toast.makeText(MainActivity.this, "停止录音", 1000).show();
			}
		});
	}

	/**
	 * 开始录音
	 */
	private void recorderStart() {
		/* 创建录音文件 */
		// 第一个参数表示文件名前缀
		// 第二个参数表示文件后缀
		// 第三个参数表示文件存储路径
		try {
			mRecAudioFile = File.createTempFile("recaudio_", ".amr",
					Environment.getExternalStorageDirectory());
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		mediaRecorder = new MediaRecorder();
		mediaRecorder.reset();
		// 设置录音设备
		mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
		// 设置文件输出格式
		mediaRecorder.setOutputFormat(MediaRecorder.AudioSource.DEFAULT);
		// 设置文件输出的编码格式
		mediaRecorder.setAudioEncoder(MediaRecorder.AudioSource.DEFAULT);
		// 设置输出路径
		mediaRecorder.setOutputFile(mRecAudioFile.getAbsolutePath());
		// 准备录音
		try {
			// 一旦录音设备被占用,就会出现错误
			mediaRecorder.prepare();
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 开始录音
		mediaRecorder.start();
	}

	/**
	 * 停止录音
	 */
	private void recorderStop() {
		if (mediaRecorder != null) {
			mediaRecorder.stop();
			mediaRecorder.release();
			mediaRecorder = null;
		}
	}

}

录制声音,必须有录制的权限

而把文件写入到SDCard卡中,还必须有写入SDCard数据的权限

所以要在AndroidManifest.xml中加入对应的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:117908次
    • 积分:1950
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:102篇
    • 译文:1篇
    • 评论:18条
    文章分类
    最新评论