当前位置: 代码迷 >> Android >> android MediaRecorder刻制音频
  详细解决方案

android MediaRecorder刻制音频

热度:63   发布时间:2016-04-28 05:49:09.0
android MediaRecorder录制音频

使用MediaRecorder录制音频步骤:

创建MediaRecorder对象

调用MediaRecorder的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来自麦克风的声音

调用MediaRecorder对象的setOutputFormat()设置所录制的音频 文件的格式

调用MediaRecorder对象的setAudioEncoder() ,setAudioEncodingBitRate(int bitRate),setAudioSamplingRate(int samplingRate)设置所录制的声音的编码格式,编码位率,采

样率等,这些参数将可以控制所录制的声音的品质,文件的大小 ,一般来说品质越好,声音文件越大

调用MediaRecorder的setOutputFile(String path)方法设置 录制的音频文件的保存位置

调用MediaRecorder的prepare()方法准备录制

调用MediaRecorder对象的start()方法开始录制

录制完成,调用MediaRecorder对象的stop()方法停止录制,并调用release()方法释放资源

如下:

MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(PATH_NAME); recorder.prepare(); recorder.start();   // Recording is now started ... recorder.stop(); recorder.reset();   // You can reuse the object by going back to setAudioSource() step recorder.release(); // Now the object cannot be reused


例子程序:

Activity:

import java.io.File;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.ImageButton;import android.widget.Toast;public class RecordSound extends Activity	implements OnClickListener{	// 定义界面上的两个按钮	ImageButton record, stop;	// 系统的音频文件	File soundFile;	MediaRecorder mRecorder;	@Override	public void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		// 获取程序界面中的两个按钮		record = (ImageButton) findViewById(R.id.record);		stop = (ImageButton) findViewById(R.id.stop);		// 为两个按钮的单击事件绑定监听器		record.setOnClickListener(this);		stop.setOnClickListener(this);	}	@Override	public void onDestroy()	{		if (soundFile != null && soundFile.exists())		{			// 停止录音			mRecorder.stop();			// 释放资源			mRecorder.release();			mRecorder = null;		}		super.onDestroy();	}	@Override	public void onClick(View source)	{		switch (source.getId())		{		// 单击录音按钮			case R.id.record:				if (!Environment.getExternalStorageState().equals(					android.os.Environment.MEDIA_MOUNTED))				{					Toast.makeText(RecordSound.this, "SD卡不存在,请插入SD卡!",						Toast.LENGTH_SHORT).show();					return;				}				try				{					// 创建保存录音的音频文件					soundFile = new File(Environment						.getExternalStorageDirectory().getCanonicalFile()						+ "/sound.amr");					mRecorder = new MediaRecorder();					// 设置录音的声音来源					mRecorder.setAudioSource(MediaRecorder						.AudioSource.MIC);					// 设置录制的声音的输出格式(必须在设置声音编码格式之前设置)					mRecorder.setOutputFormat(MediaRecorder						.OutputFormat.THREE_GPP);					// 设置声音编码的格式					mRecorder.setAudioEncoder(MediaRecorder						.AudioEncoder.AMR_NB);					mRecorder.setOutputFile(soundFile.getAbsolutePath());					mRecorder.prepare();					// 开始录音					mRecorder.start();  //①				}				catch (Exception e)				{					e.printStackTrace();				}				break;			// 单击停止按钮			case R.id.stop:				if (soundFile != null && soundFile.exists())				{					// 停止录音					mRecorder.stop();  //②					// 释放资源					mRecorder.release();  //③					mRecorder = null;				}				break;		}	}}

清单文件:

	<!-- 授予该程序录制声音的权限 -->	<uses-permission android:name="android.permission.RECORD_AUDIO" />	<!-- 授予该程序向外部存储器写入数据的权限 -->	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


  相关解决方案