录制一段音频

原创 2013年12月05日 15:13:16
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" />


相关文章推荐

python——判断一段音频是否有声音

根据一段wav音频判断该音频是否有声音#-*- coding: utf-8 -*- import os import wave from time import sleep import numpy ...

Android如何写一段空音频数据,静音数据

遵循:BY-SA 署名-相同方式共享 4.0协议 作者:谭东 时间:2016年10月31日 环境:Windows 7 有的时候会遇到这样的需求,例如直播时候,某段时间点了静音,你...

分享一段H264视频和AAC音频的RTP封包代码

1. H264视频的RTP封包 [c-sharp] view plaincopyprint? static int h264_parse(Track *tr, uint8_...

C#调用FFMPEG实现桌面录制(视频+音频+生成本地文件)【笔记】

不得不说FFMPEG真是个神奇的玩意,所接触的部分不过万一。网上有个很火的例子是c++方面的,当然这个功能还是用c++来实现比较妥当。 然而我不会c++ 因为我的功能需求比较简单,只要实现基本的录...
  • cuoban
  • cuoban
  • 2016年01月21日 16:25
  • 1464

javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)

前言: 前面几章已经基本把音频或者视频如何录制,如何抓取,如何推送的功能利用javaCV简单的给实现了; 本章将会整合前面几章的内容进行深入音视频混合抓取、录制、推送 1、实现功能 (1)抓取本地...
  • eguid_1
  • eguid_1
  • 2016年10月13日 10:07
  • 4153

AudioRecord录制音频文件并存储本地

浮躁期,太浮躁了,不能专心学习,自律,成功的人一定是自律的人。 AudioRecord录音,直接上代码: int mRecordBufferSize = 0; private AudioRecord...

iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

摘自:http://www.cnblogs.com/kenshincui/p/4186022.html 概览 随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单...

[iOS]使用Audio Queue Services 播放和录制音频

要在iOS设备上播放和录制音频,苹果推荐我们使用AVFoundation框架中的AVAudioPlayer和AVAudioRecorder类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前...

android多媒体部分学习笔记八------音频录制 mediaRecorder

/**  * 原始音频的播放和录制  *   * audio  *   * audioTrack  *   *   * @time 下午12:58:03  * @author ret...

安卓录制音频:使用MediaRecord实现

这一段时间,由于项目需要,一直在搞使用音频录制。看了网上很多大牛的代码,各种删删减减,百度来百度去,终于大体把流程搞通了,用时5天。 注意:本次代码实现:通过麦克风获取说话人语音->存储语音->播放...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:录制一段音频
举报原因:
原因补充:

(最多只允许输入30个字)