前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android编程录音工具类RecorderUtil定义与用法示例

Android编程录音工具类RecorderUtil定义与用法示例

作者头像
砸漏
发布2020-11-02 09:02:45
8250
发布2020-11-02 09:02:45
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了Android编程录音工具类RecorderUtil定义与用法。分享给大家供大家参考,具体如下:

以下工具类都是经过实战开发验证都是可以直接复制使用的。

录音工具类介绍:

录音工具类主要平时用来开发语音聊天的,在微信和QQ上该工具类都是常用的,因为语音聊天。

使用硬件一般都要开权限,别忘了。这里还需要搭配 AndroidFileUtil 类使用,为了方便才这么封装的

代码语言:javascript
复制
import android.media.MediaRecorder;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 录音工具
*/
public class RecorderUtil {
private static final String TAG = "RecorderUtil";
private String mFileName = null;
private MediaRecorder mRecorder = null;
private long startTime;
private long timeInterval;
private boolean isRecording;
public RecorderUtil(){
mFileName = FileUtil.getCacheFilePath("tempAudio");
}
/**
* 开始录音
*/
public void startRecording() {
if (mFileName == null) return;
if (isRecording){
mRecorder.release();
mRecorder = null;
}
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
startTime = System.currentTimeMillis();
try {
mRecorder.prepare();
mRecorder.start();
isRecording = true;
} catch (Exception e){
Log.e(TAG, "prepare() failed");
}
}
/**
* 停止录音
*/
public void stopRecording() {
if (mFileName == null) return;
timeInterval = System.currentTimeMillis() - startTime;
try{
if (timeInterval 1000){
mRecorder.stop();
}
mRecorder.release();
mRecorder = null;
isRecording =false;
}catch (Exception e){
Log.e(TAG, "release() failed");
}
}
/**
* 取消语音
*/
public synchronized void cancelRecording() {
if (mRecorder != null) {
try {
mRecorder.release();
mRecorder = null;
} catch (Exception e) {
e.printStackTrace();
}
File file = new File(mFileName);
file.deleteOnExit();
}
isRecording =false;
}
/**
* 获取录音文件
*/
public byte[] getDate() {
if (mFileName == null) return null;
try{
return readFile(new File(mFileName));
}catch (IOException e){
Log.e(TAG, "read file error" + e);
return null;
}
}
/**
* 获取录音文件地址
*/
public String getFilePath(){
return mFileName;
}
/**
* 获取录音时长,单位秒
*/
public long getTimeInterval() {
return timeInterval/1000;
}
/**
* 将文件转化为byte[]
*
* @param file 输入文件
*/
private static byte[] readFile(File file) throws IOException {
// Open file
RandomAccessFile f = new RandomAccessFile(file, "r");
try {
// Get and check length
long longlength = f.length();
int length = (int) longlength;
if (length != longlength)
throw new IOException("File size  = 2 GB");
// Read file and return data
byte[] data = new byte[length];
f.readFully(data);
return data;
} finally {
f.close();
}
}
}

使用步骤:

1. 首先private RecorderUtil recorder = new RecorderUtil(); 实例化一下 2. 开始录音recorder.startRecording(); 3. 录音完成后停止录音recorder.stopRecording(); 4. 当然如果录音开始之后想取消语音发送,类似于微信上滑取消语音发送,解决方案滑动监听判断确定取消发送,就不要将消息发出去并且还要调用recorder.cancelRecording(); //取消语音释放资源 即可

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档