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

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

以上是 Android编程录音工具类RecorderUtil定义与用法示例 的全部内容, 来源链接: utcz.com/z/342400.html

回到顶部