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

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

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

录音工具类介绍:

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

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

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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值