您的位置:首页 > 大数据 > 物联网

使用AudioRecord和 AudioTrack实现录音并播放

2011-05-07 14:16 267 查看
下载地址:http://download.csdn.net/source/3148521

此应用可以设置参数值:频率、编码格式、声道。

private void startRecording
(){

createAudioRecord();//每次读取设置的参数后再创建

audioRecord.startRecording();

isRecording = true;

recordingThread = new Thread(new Runnable() {

@Override

public void run() {

writeAudioDataToFile();//每次均写入同一文件中

}

},"AudioRecorder Thread");

recordingThread.start();

}

private void stopRecording
(){

if(null != audioRecord){

isRecording = false;

audioRecord.stop();

audioRecord.release();

audioRecord = null;

recordingThread = null;

}

copyWaveFile(getTempFilename(),getFilename());

deleteTempFile();

}

AudioTrack播放类

class PCMAudioTrack
extends
Thread {

protected
byte[] m_out_bytes;

final String
FILE_PATH = "/sdcard/AudioRecorder/";

final String
FILE_NAME = "session.wav";

File
file;

FileInputStream in;

public void
init() {

try
{

file = new
File(FILE_PATH , FILE_NAME);

file.createNewFile();

in = new
FileInputStream(file);

//

in.read(temp, 0, length);

m_keep_running = true;

createAudioTrack();

m_out_bytes
= new byte[playBufSize];

} catch
(Exception e) {

e.printStackTrace();

}

}

public void
free() {

m_keep_running = false;

try {

Thread.sleep(1000);

} catch
(Exception e) {

Log.d("sleep
exceptions.../n", "");

}

}

public void
run() {

byte[]
bytes_pkg = null;

audioTrack.play();

while
(m_keep_running) {

try {

in.read(m_out_bytes);

bytes_pkg =
m_out_bytes.clone();

audioTrack.write(bytes_pkg, 0, bytes_pkg.length);

} catch
(Exception e) {

e.printStackTrace();

}

}

audioTrack.stop();

audioTrack =
null;

try {

in.close();

} catch
(IOException e) {

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: