使用AudioRecord和 AudioTrack实现录音并播放
2011-05-07 14:16
302 查看
下载地址: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();
}
}
}
此应用可以设置参数值:频率、编码格式、声道。
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();
}
}
}
相关文章推荐
- android 使用 audiorecord 和 audiotrack 实现实时录音播放
- JNI在Android开发中的应用之--用AudioRecord录音,用AudioTrack播放声音.
- 使用AudioRecord实现暂停录音功能
- JNI在Android开发中的应用之--用AudioRecord录音,用AudioTrack播放声音.
- Android使用AudioRecord实现暂停录音功能实例代码
- [置顶] Android使用MediaRecorder实现录音及播放
- 使用MediaRecorder和MediaPlayer实现录音和播放功能-以及碰到的问题
- 使用AudioRecord和AudioTrack来录制和播放音频
- 使用AudioTrack实现声音播放
- 实现录音和播放 使用wave系列函数
- Android使用MediaRecorder实现录音及播放
- 【安卓】 使用ijk播放器实现视频的播放
- Smobiler实现录音和录音播放、调用通讯录功能(开发日志九)
- C#中使用DirectX实现视频播放
- Android 使用VideoView播放MP4的简单实现
- 使用ionic播放轮询广告的实现方法(必看)
- 实时录音与播放的内存实现 Qt代码
- Visual C#使用DirectX实现视频播放
- 使用jPlayer实现带广告功能和试听试看功能的MP4/MP3播放
- 使用AJAX实现优酷视频播放时留言不刷新