前言
Android系统在实现录音以及录像的功能均是通过使用MediaRecorder实现的。本篇文章主要介绍如何借助MediaRecorder实现后台录音功能。
MediaRecoder
MediaRecoder主要方法介绍
- void prepar():准备录制
- void start():开始录制
- void stop():停止录制
- void reset():重置MediaRecorder
- void release():释放MediaRecorder占用的资源
- void setAudioEncoder(int):设置音频记录的编码格式
- void setAudioSource(int):设置音频记录的音频源
- void setOutoutFormat(int):设置记录的媒体文件的输出转换格式
- void setOutputFile(String):媒体文件输出路径
audiosource的来源设定
来源 | 描述 |
---|---|
CAMCORDER | 录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则使用预设的麦克风 |
DEFAULT | 默认音频源 |
MIC | 录音来源为主麦克风 |
REMOTE_SUBMIX | 用于远程呈现的音频流的子混音的音频源,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请 |
UNPROCESSED | 与默认相同 |
VOICE_CALL | 记录上行与下行音频源,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请 |
VOICE_COMMUNICATION | 麦克风音频源针对VoIP等语音通信进行了调整,可以接收到通话的双方语音 |
VOICE_DOWNLINK、VOICE_UPLINK | 上行下行的语音,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请 |
VOICE_PERFORMANCE | 捕获音频的来源意味着要实时处理并播放以进行现场演出 |
VOICE_RECOGNITION | 用于获取语音进行语音识别 |
编码格式以及输出格式
编码格式
- ACC、ACC-ELD、AMR_NB、AMR_WB、DEFAULT、HE_AAC、OPUS、VORBIS
输出格式
- AAC_ADTS、AMR_NB、AMR_WB、DEFAULT、MPEG_2_TS、MPEG_4、OGG、THREE_GPP、WEBM
录音部分源码
开始录音
public void startRecord() {
if (mMediaRecorder == null)
mMediaRecorder = new MediaRecorder();
try {
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置麦克风
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
fileName = DateFormat.format("yyyyMMdd_HHmmss", Calendar.getInstance(Locale.CHINA)) + ".m4a";
File destDir = new File(Environment.getExternalStorageDirectory()+"/test/");
if (!destDir.exists(