package com.honghe.record;
import java.io.File;
import java.io.IOException;
import android.media.MediaRecorder;
public class MediaRecordFunc {
private boolean isRecord = false;
private MediaRecorder mMediaRecorder;
private MediaRecordFunc() {
}
private static MediaRecordFunc mInstance;
public synchronized static MediaRecordFunc getInstance() {
if (mInstance == null)
mInstance = new MediaRecordFunc();
return mInstance;
}
public int startRecordAndFile() {
//判断是否有外部存储设备sdcard
if (AudioFileFunc.isSdcardExit()) {
if (isRecord) {
return ErrorCode.E_STATE_RECODING;
} else {
if (mMediaRecorder == null)
createMediaRecord();
try {
mMediaRecorder.prepare();
mMediaRecorder.start();
// 让录制状态为true
isRecord = true;
return ErrorCode.SUCCESS;
} catch (IOException ex) {
ex.printStackTrace();
return ErrorCode.E_UNKOWN;
}
}
} else {
return ErrorCode.E_NOSDCARD;
}
}
public void stopRecordAndFile() {
close();
}
public long getRecordFileSize() {
return AudioFileFunc.getFileSize(AudioFileFunc.getAMRFilePath());
}
private void createMediaRecord() {
/* ①Initial:实例化MediaRecorder对象 */
mMediaRecorder = new MediaRecorder();
/* setAudioSource/setVedioSource*/
mMediaRecorder.setAudioSource(AudioFileFunc.AUDIO_INPUT);//设置麦克风
/* 设置输出文件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default
* THREE_GPP(3gp格式,H263视频/ARM音频编码)、MPEG-4、RAW_AMR(只支持音频且音频编码要求为AMR_NB)
*/
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
/* 设置音频文件的编码:AAC/AMR_NB/AMR_MB/Default */
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
/* 设置输出文件的路径 */
File file = new File(AudioFileFunc.getAMRFilePath());
if (file.exists()) {
file.delete();
}
mMediaRecorder.setOutputFile(AudioFileFunc.getAMRFilePath());
}
private void close() {
if (mMediaRecorder != null) {
System.out.println("stopRecord");
isRecord = false;
mMediaRecorder.stop();
mMediaRecorder.release();
mMediaRecorder = null;
}
}
}