2023年11月27日发(作者:)
android录⾳代码
录⾳⼯具类:,代码如下:
public class AudioRecoderUtils {
//⽂件路径
private String filePath;
//⽂件夹路径
private String FolderPath;
private MediaRecorder mMediaRecorder;
private final String TAG = "fan";
public static final int MAX_LENGTH = 1000 * 60 * 10;// 最⼤录⾳时长1000*60*10;
private OnAudioStatusUpdateListener audioStatusUpdateListener;
/**
* ⽂件存储默认sdcard/record
*/
public AudioRecoderUtils(){
//默认保存路径为/sdcard/record/下
this(ernalStorageDirectory()+"/record/");
}
public AudioRecoderUtils(String filePath) {
File path = new File(filePath);
if(!())
();
Path = filePath;
}
private long startTime;
private long endTime;
/**
* 开始录⾳ 使⽤amr格式
* 录⾳⽂件
* @return
*/
public void startRecord() {
// 开始录⾳
/* ①Initial:实例化MediaRecorder对象 */
if (mMediaRecorder == null)
mMediaRecorder = new MediaRecorder();
try {
/* ②setAudioSource/setVedioSource */
ioSource();// 设置麦克风
/* ②设置⾳频⽂件的编码:AAC/AMR_NB/AMR_MB/Default 声⾳的(波形)的采样 */
putFormat(T);
/*
* ②设置输出⽂件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default THREE_GPP(3gp格式
* ,H263视频/ARM⾳频编码)、MPEG-4、RAW_AMR(只⽀持⾳频且⾳频编码要求为AMR_NB)
*/
public long stopRecord() {
if (mMediaRecorder == null)
return 0L;
endTime = tTimeMillis();
//有⼀些⽹友反应在5.0以上在调⽤stop的时候会报错,翻阅了⼀下⾕歌⽂档发现上⾯确实写的有可能会报错的情况,捕获异常清理⼀下就⾏了,感谢⼤家反馈!
try {
();
();
}
layed(mUpdateMicStatusTimer, SPACE);
}
}
public interface OnAudioStatusUpdateListener {
/**
* 录⾳中...
* @param db 当前声⾳分贝
* @param time 录⾳时长
*/
public void onUpdate(double db,long time);
/**
* 停⽌录⾳
* @param filePath 保存路径
*/
public void onStop(String filePath);
}
}
使⽤很简单,主要就是开始录⾳、取消录⾳、结束录⾳和录⾳监听,注意,取
startRecord()cancelRecord()stopRecord()setOnAudioStatusUpdateListener()
消录⾳不保存⽂件,结束录⾳会保存⽂件!
在布局⽂件中添加⼀个控件(任意⼀个都⾏)


发布评论