随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
Android中提供了MediaRecorder类来录制音频,过程很简单,只需按步骤执行即可:
下面用一个简单实例来演示MediaRecorder的使用:
Activity:
package com.home.activity;
import java.io.File;
import com.home.testrecord.R;
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.Toast;
import android.widget.ToggleButton;
public class TestRecordActivity extends Activity implements OnClickListener {
private ToggleButton recordBtn;
private MediaRecorder mediaRecorder;
// 系统的音频文件
private File soundFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recordBtn = (ToggleButton) findViewById(R.id.main_toggleButton);
recordBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (recordBtn.isChecked()) {
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
Toast.makeText(this, "SD卡不存在,请插入SD卡!", Toast.LENGTH_LONG)
.show();
return;
}
// 创建保存录音的音频文件
soundFile = new File(Environment.getExternalStorageDirectory()
+ "/mysound.amr");
// 创建录制音频的对象
mediaRecorder = new MediaRecorder();
// 设置录音的声音来源,一般来自于麦克风
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置录制的声音输出格式(必须在设置声音编码格式之前设置)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 设置声音编码格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 设置声音的输出路径
mediaRecorder.setOutputFile(soundFile.getAbsolutePath());
// 准备录音
try {
mediaRecorder.prepare();
// 开始录音
mediaRecorder.start();
} catch (Exception e) {
e.printStackTrace();
}
} else {
if (soundFile != null && soundFile.exists()) {
// 停止录制
mediaRecorder.stop();
// 释放资源
mediaRecorder.release();
mediaRecorder = null;
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (soundFile != null && soundFile.exists()) {
// 停止录制
mediaRecorder.stop();
// 释放资源
mediaRecorder.release();
mediaRecorder = null;
}
}
}
注意需要加上相应权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />