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-4RAW_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()

消录⾳不保存⽂件,结束录⾳会保存⽂件!

在布局⽂件中添加⼀个控件(任意⼀个都⾏)

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按住说话"

android:textColor="@android:color/white"

android:id="@+id/button"

android:background="@color/colorPrimary"

/>

@Override

public void onStop(String filePath) {

xt(, "录⾳保存在:" + filePath, _SHORT).show();

t(2String(0));

}

});

//Buttontouch监听

ouchListener(new hListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (ion()){

case _DOWN:

Location(rl,,0,0);

t("松开保存");

ecord();

break;

case _UP:

cord(); //结束录⾳(保存录⾳⽂件)

// Record(); //取消录⾳(不保存录⾳⽂件)

s();

t("按住说话");