Android 音频开发 目录
- Android音频开发(1):音频相关知识
- Android音频开发(2):使用AudioRecord录制pcm格式音频
- Android音频开发(3):使用AudioRecord实现录音的暂停和恢复
- Android音频开发(4):PCM转WAV格式音频
- Android音频开发(5):Mp3的录制 - 编译Lame源码
- Android音频开发(6):Mp3的录制 - 使用Lame实时录制MP3格式音频
- Android音频开发(7):音乐可视化-FFT频谱图
项目地址
https://github.com/zhaolewei/ZlwAudioRecorder
上一篇主要写了AudioRecord实现音频录制的开始和停止,AudioRecord并没有暂停和恢复播放功能的API,所以需要手动实现
一、解决办法
思路很简单,现在可以实现音频的文件录制和停止,并生成pcm文件,那么暂停时将这次文件先保存下来,恢复播放后开始新一轮的录制,那么最后会生成多个pcm音频,再将这些pcm文件进行合并,这样就实现了暂停/恢复的功能了。
二、实现
- 实现的重点在于如何控制录音的状态
/**
* @author zhaolewei on 2018/7/10.
*/
public class RecordHelper {
private volatile RecordState state = RecordState.IDLE;
private AudioRecordThread audioRecordThread;
private File recordFile = null;
private File tmpFile = null;
private List<File> files = new ArrayList<>();
public void start(String filePath, RecordConfig config) {
this.currentConfig = config;
if (state != RecordState.IDLE) {
Logger.e(TAG, "状态异常当前状态: %s", state.name());
return;
}
recordFile = new File(filePath);
String tempFilePath = getTempFilePath();
Logger.i(TAG, "tmpPCM File: %s", tempFilePath);
tmpFile = new File(tempFilePath);
audioRecordThread = new AudioRecordThread();
audioRecordThread.start();
}
public void stop() {
if (state == RecordState.IDLE) {
Logger.e(TAG, "状态异常当前状态: %s", state.name()