Android MediaRecorder录制音频

时间:2021-10-12 11:10:18

今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤:

1、创建MediaRecorder对象。

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

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

4、调用MediaRecorder对象的setAudioEncode()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录制声音的编码格式、编码位率、采样率等,这些参数将可以控制所录制声音的品质、文件的大小。

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

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

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

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

下面上个例子:

 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卡!"
, 5000)
.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"/>